1

在转换图像的 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查看

4

1 回答 1

3

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

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

  2. 您需要设置您的网站以处理虚拟 URL(这里最简单的重写规则是在内部将请求 URL 作为参数传递给某个 PHP(或其他)脚本),

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

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

于 2013-11-07T12:25:41.577 回答