如何防止用户通过URL查看图像?

时间:2013-07-23 22:50:24

标签: php image

想象一下,我的网站空间上有一个图片文件secretImage.png,我希望有几个用户有权在index.php上访问此图片。这很容易做到:

// index.php
if($userIsAllowed) echo '<img src="secretImage.png" />';

问题是,理论上用户可以通过直接浏览到www.myDomain.com/secretImage.png来访问图像。有没有办法阻止他们这样做,以便只能在index.php内查看图像?

4 个答案:

答案 0 :(得分:0)

您可以使用htaccess通过.php文件路由特定文件夹的所有请求。在文件中,您可以确定用户是否可以查看该文件...如果是,则提供正确的标题和图像。如果没有,请显示您想要的任何内容(404,占位符图像)。

答案 1 :(得分:0)

HTTP调用GET /secretImage.png本身应该要求身份验证。例如,您可以使用基本身份验证并让用户发送Authorization: {base64 user:password}标头。

答案 2 :(得分:0)

通过fpassthru从php文件提供图像,您可以在其中检查是否允许用户

例如,你可能有一个php文件getimage.php,它接受一个像“?image = mysecretimage.png”这样的查询字符串,如果允许用户,它会通过它。如果你走这条路线,请小心采取适当的预防措施,只传递你的图像文件。

答案 3 :(得分:0)

可以通过HTTP身份验证保护用户特定的URL。有examples在线,完全有可能通过一些.htaccess摆弄你可以为所有现有图像量身定制这种方法。