限制访问我的网站上的图像,除非通过我自己的htmls

在我的网站上,我以一种简单的方式存储用户图片,如:“image / user_1.jpg”。

我不希望访问者只能通过尝试user_ids来查看服务器上的图像。 (例如:www.mydomain.com/images/user_2.jpg,www.mydomain.com/images/user_3.jpg,等等…)

到目前为止,我有三个解决scheme:

  1. 我试图使用.htaccess密码保护“图像”文件夹。 这帮了我一些意见,但一些图像开始popup一个用户名和密码请求我的htmls(而令人惊讶的是一些图像没有),所以这似乎是一个不可预知的方法。

  2. 我可以开始转换我的user_id的一些盐的md5哈希。 图像将被命名为:/image/user_e4d909c290d0fb1ca068ffaddf22cbd0.jpg。 我不喜欢这个解决scheme。 这使得文件系统的方式变得复杂。

  3. 或者我可以使用PHP的readfile()函数或Perl或Python中类似的东西。 例如,我可以使用md5string传递密码来validation访问者是否具有访问该图像的login用户。

我倾向于选项3,但与Perl或Python的angular度(假设他们会比PHP更快)。 不过,我想看看关于这个问题的其他想法。 也许有一个简单的.htaccess技巧呢?

基本上所有我想确定的是,没有人可以从我的网站查看图像,除非图像是从我的网站托pipe的htmls内直接调用。

非常感谢,

Haluk

Solutions Collecting From Web of "限制访问我的网站上的图像,除非通过我自己的htmls"

方法#1是不可行的,因为它会要求每个图像的用户名和密码。 由于缓存问题,您可能会提示某些图像,而不是其他图像。

方法#2看起来最吸引我的是处理器密集度最低,但只有通过md5函数传递的user_id,文件名仍然相当容易猜测。 你应该为md5('我的秘密字符串'。$ user_id)寻求更好的解决方案。

你为什么通过Perl或Python选择#3? PHP的速度有什么问题? 事实上,如果你用这种方法来保护你的图片,你应该把它们移出和放在你的webroot上面,这样它们只能通过你的脚本访问,它首先检查用户是否被认证,然后通过阅读并输出。 或者,你可以用一个htaccess文件来保护目录,说明deny from all

另外,您应该通过PHP或通过.htaccess来获得HTTP_REFERER安全性。

祝你好运!

您选择用来确定请求源的任何方法与用户浏览器发送的HTTP_REFERER信息一样可靠。 要求认证是保护内容的唯一好方法。

你是对的考虑选项#3。 使用将验证用户和readfile()图像的服务脚本。 确保在提供图像之前通过header()函数设置正确的Content-Type HTTP标头。 为了更好的隔离,图片应该放在网站根目录的上方,或者使用良好的.htaccess规则来保护 – 这样保护文件和/或目录肯定是一种方法。

您可以通过htaccess查找“防止盗链”,我认为这应该是您需要的防护类型的简单解决方案。 然而,它不是愚蠢的证明,真正想要得到这些图像的人将通过伪造引荐者找到解决办法。

http://altlab.com/htaccess_tutorial.html

正如前面所说的盗链保护并不能保护你的文件,只是通过改变他们的ID。 另外Refferer可以很容易伪造。

在这种情况下,我会推荐一些认证。 您必须创建PHP脚本,只有在通过COOKIES或SESSION验证记录的用户时才能提供图像。 (我不会推荐使用用户密码的md5)。

也许你会需要一些SQL表来保存访问权限。

呵呵,为了保护你的图像,你可以把.htaccess的地方

 deny from all 

到图像文件夹。