[英]How to Prevent Direct Access to a php file that is generating Image
我有一个生成Image的php文件,它被包含在image标签中,如下所示:
<img src"generate_contact.php?memberid=3456">
现在,如果有人尝试使用Memberid查询字符串直接访问此文件,他们实际上将看到正在生成的图像文件。
如何防止直接访问 "generate_contact.php"
?
注意:如果我尝试在插入此img标签的文件中制作一个常量,generate_contact.php是否可以访问该常量? 询问,因为不包含generate_contact.php。仅在图像标记中作为src添加。
问候
为什么不使用唯一的哈希而不是使用增量成员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并获取整个成员的关联联系人。
无法阻止直接访问您要显示给用户的图像。 有了:
<img src = "generate_contact.php?memberid=3456">
您已经为他们提供了直接访问权限,因为一旦页面加载,用户的浏览器实际上将对该文件发出GET请求。 试图阻止直接访问您要显示给用户的图像与Internet的基本要求背道而驰,在Internet中,用户要求公共文档。
要求将图像放置在页面内的用户浏览器是一个“获取”请求,与您直接键入地址一样。 除非使用Flash,否则您实际上无法将图像放置在页面上,然后使其完全无法访问。
好,再退一步。
都是关于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
吐出图片还是不会吐出图片。 它在后台执行的操作无关紧要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.