在用于转换图像的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
更改为其他用户的图像(假设他知道路径),则显示该图像。
我该怎样阻止它?
查看答案 0 :(得分:3)
正如@David Houde所说,这种逻辑应该在应用程序中实现,例如以下列方式:
用户上传的图片将存储在网络外部 站点根目录,因此无法使用URL直接访问它们
您需要设置网站来处理虚拟网址(最简单的方法) 这里是一个内部传递请求URL的重写规则 某些PHP(或其他)脚本的参数),
然后,在您的脚本中,您将有足够的自由来检查是否 该请求符合您的政策,
如果请求合法,您的脚本将能够打开 请求的图像文件并将其内容作为Web服务器应答发送。