0

我有一个生成图像的 php 文件,它包含在图像标签中,如下所示:

<img src"generate_contact.php?memberid=3456">

现在,如果有人尝试使用 memberid 查询字符串直接访问此文件,他们将实际看到正在生成的图像文件。

如何防止直接访问 "generate_contact.php"

注意:如果我尝试在插入此 img 标签的文件中创建一个 CONSTANT,generate_contact.php 是否可以访问该 CONSTANT?询问是因为 generate_contact.php 没有被包括在内。它仅作为图像标签中的 src 添加。

问候

4

4 回答 4

1

为什么不使用唯一的哈希而不是使用增量成员 ID 来访问此图像?

在您的成员表中,添加一个“哈希”字段,并在此字段中为每个成员添加一个随机字符串。

我习惯以这种方式生成 10 个字符散列:

$hash = substr(str_shuffle(base_convert(str_shuffle(sha1(str_shuffle(md5(rand() . microtime())))), 16, 36)), 0, 10);

之后,使用您的哈希来识别您的成员:

<img src = "generate_contact.php?memberhash=0qxv(...)"/>

通过这种方式,爬虫将无法增加 id 并获得整个成员的关联联系人。

于 2012-11-10T08:43:33.747 回答
0

没有办法阻止直接访问您想要显示给用户的图像。有了:

<img src = "generate_contact.php?memberid=3456">

您已经为他们提供了直接访问权限,因为一旦页面加载,用户的浏览器实际上会对文件发出 GET 请求。试图阻止直接访问您想要显示给用户的图像违反了 Internet 的基本原理,用户请求公共文档。

于 2012-11-10T08:39:30.090 回答
0

用户浏览器请求将图像放置在页面内是一个“获取”请求,与您直接键入地址相同。您无法将图像实际放置在页面上,然后使其完全无法访问,除非当然使用闪存

于 2012-11-10T08:41:18.967 回答
0

好吧,退一步。

都是关于 URL 的。如果您将 URL 放入图像元素的 src 属性中,则该图像必须在该 URL 中可用:

<img src="/img/profile/42.jpg">

浏览器将下载带有此图像元素的 HTML 文档,然后像第一个请求一样向该 URL发出另一个 HTTP 请求以下载图像。

您可以将该 URL 直接放入浏览器的地址栏中以获得相同的效果。某些 URL 上提供了某些内容。如何访问该 URL 并不重要。它不是“绑定到 HTML 文档”或“秘密”或“隐藏”或类似的,因为它在 HTML 文档中。

URL 始终是公开的并且可以“直接”访问,否则没有人可以看到它们的内容。

因此,您的 URL 要么generate_contact.php?memberid=3456吐出图像,要么不吐出。它在幕后做什么是无关紧要的。

于 2012-11-10T08:42:25.310 回答