仅允许来自特定html页面的图像访问

时间:2012-01-12 13:30:29

标签: security .htaccess httprequest

我的网站拥有不同的用户,拥有不同的图片,这些图片都存储在同一个文件夹中。图像以增量方式存储,1.jpg,2.jpg等。 用户可以在特定的php页面上查看这些图片。现在我想通过这个php页面限制对这些图像的访问,这样他们就可以简单地枚举所有文件名来查看其他用户的图像。

我想用.htaccess文件做这件事,该文件存储在/shop/img/userimg/中的图像旁边,看起来像这样:

RewriteEngine On
RewriteCond %{REQUEST_URI} !^/shop/shop.php [NC]
RewriteRule .*\.(jpe?g|gif|bmp|png)$ - [F]

我的网站是一个子网站(如您所见:/ shop /),用于查看这些图像的php页面将是shop.php

现在,这有可能吗?我做错了什么?

2 个答案:

答案 0 :(得分:2)

请注意,referer标头不受信任。一些代理和防火墙完全删除标题,因此您必须考虑它不存在(这是第二行的用途)

RewriteCond %{HTTP_REFERER} !/shop/shop\.php$ [NC]
RewriteCond %{HTTP_REFERER} !^$
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,L]

答案 1 :(得分:1)

尝试将以下内容添加到htaccess文件中。

RewriteEngine On
RewriteBase /

#if the referer (page request came from) does not contain shop.php
RewriteCond %{HTTP_REFERER} !/shop/shop\.php [NC]
#and it is a request for images, then send a 403 forbidden
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,L]