如何拒绝访问其他用户上传的图像?

时间:2013-11-07 11:40:41

标签: apache file-access

在用于转换图像的Web应用程序中,我想拒绝直接访问其他用户的图像,我已经实现了在主.htaccess文件中添加此代码:

RewriteCond %{HTTP_COOKIE} !PHPSESSID=(.+) [OR,NC]
RewriteCond %{HTTP_COOKIE}:%{REQUEST_URI} ^PHPSESSID=(.*?);:(?!.*?/usuarios/\1).* [NC]
RewriteRule ^.*?/usuarios/.+?\.(gif|jpe?g|png|wbmp)$ - [R=403,L]

因此,由于用户有自己的文件夹来上传和转换图像,此规则将检查您是否正在查找哪个目录与您的id_session匹配,如果不是,则会返回403响应匹配。

它似乎工作正常,但如果任何用户附加图像并将scr更改为其他用户的图像(假设他知道路径),则显示该图像。

我该怎样阻止它?

您可以在http://itransformer.es

查看

1 个答案:

答案 0 :(得分:3)

正如@David Houde所说,这种逻辑应该在应用程序中实现,例如以下列方式:

  1. 用户上传的图片将存储在网络外部 站点根目录,因此无法使用URL直接访问它们

  2. 您需要设置网站来处理虚拟网址(最简单的方法) 这里是一个内部传递请求URL的重写规则 某些PHP(或其他)脚本的参数),

  3. 然后,在您的脚本中,您将有足够的自由来检查是否 该请求符合您的政策,

  4. 如果请求合法,您的脚本将能够打开 请求的图像文件并将其内容作为Web服务器应答发送。