【问题标题】:Allow only my domain to serve images from my server仅允许我的域从我的服务器提供图像
【发布时间】:2016-10-16 20:21:39
【问题描述】:

我知道已经回答了与这个问题密切相关的问题,但即使经过深入研究,我也没有找到适用于我的问题的解决方案。

问题如下:我有一个文件系统,允许我的用户上传个人资料图片,将来还有一个完整的私人画廊。我希望能够从我自己的一个页面中获取这些个人资料图片,例如在聊天框中添加&lt;img src="http://example.org/usercontent/[FOLDERID]/profilepicture.png" /&gt;。同时我想阻止人们在他们的 URL 栏中输入http://example.org/usercontent/[FOLDERID]/profilepicture.png 并直接查看图片,因为这些图片应该只对登录用户可见。 这可能吗?我尝试过类似的事情 <IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http://(www\.)?example\.org/.*$ [NC] RewriteRule .(gif|jpg|png|jpeg)$ [R,NC,L] </ifModule> 在我的 .htaccess 文件中,但这会导致我的所有图像都被阻止,即使我尝试&lt;img src="http://example.org/usercontent/[FOLDERID]/profilepicture.png" /&gt;,它应该只显示图像,因为图像标签是写在我自己的一个页面上的。

【问题讨论】:

    标签: image .htaccess security hotlinking


    【解决方案1】:

    我想阻止人们在他们的 URL 栏中输入 http://example.org/usercontent/[FOLDERID]/profilepicture.png 并直接查看图片,因为这些图片应该只对登录用户可见

    您必须编写一个脚本来检查用户是否已登录,如果已登录则返回图像文件,例如使用readfile() 和合适的类型和缓存标头,或者可能是 mod_sendfile。

    Referrer 检查既不安全也不可靠;这不是一个可行的身份验证机制。

    【讨论】:

    • 我不明白。 readfile 不会提示下载吗?我只是想显示图片,而不是下载它。
    • readfile 只是将文件传输到浏览器。由浏览器决定如何处理它。通常,如果它在 &lt;img&gt; 元素中,它会将其显示为图像,如果它与 Content-Disposition: attachment 标头一起提供,它会提供保存它。
    猜你喜欢
    • 1970-01-01
    • 2021-09-01
    • 2018-10-16
    • 2012-02-10
    • 1970-01-01
    • 1970-01-01
    • 2016-09-24
    • 2018-06-15
    • 2014-11-09
    相关资源
    最近更新 更多