我继承了一个带有明显安全漏洞的应用程序。
它具有基于会话的安全性,但文件上传(用户特定的)不以任何方式受到保护,并且它们存储在公共文件树中。
文件名不遵循任何惯例,因此难以猜测,但数据很敏感,因此我需要实施安全措施以防止未经授权的文件访问。
移动文件的位置实际上不是一个选项,所以我正在寻找一个htaccess解决方案来将请求转发到php处理程序脚本。
有没有人有实施这类东西或任何好的替代解决方案的经验? .htaccess语法的具体例子非常受欢迎,因为我在这方面苦苦挣扎。
答案 0 :(得分:6)
不要真正理解为什么移动它们不是一种选择,因为将它们的请求推送到处理程序意味着它们不再重要存储它们。但你是现场的那个人。
.htaccess看起来像:
RewriteEngine on
RewriteRule path/to/where/these/files/live/(.*) /handlerscript.php/$1
然后从$_SERVER['PATH_INFO']
中选择剩余的文件路径和名称。
答案 1 :(得分:3)
好吧,你可以为某个文件夹制作apache parse .jpg文件,将以下内容添加到.htaccess
AddHandler php5-cgi .jpg
然后你可以设置一个php文件来解析请求的方式,就像混沌推荐你并进行某种验证一样,然后只返回jpeg标题以及你想要显示的正确图片
这是一个例子
<?php
if($validUser)
{
header("Cache-control: No-cache");
header("Pragma: No-cache");
header("Content-Type: image/jpeg");
//correct picture address
$img = imagecreatefromjpeg("2326_b_lil.jpg");
imagejpeg($img);
}
else
{
//code for error image
}
?>
如果您想要更广泛的示例,请告诉我
答案 2 :(得分:0)
我认为您可能需要编写一个将为图像提供服务的脚本,然后使用htaccess完全限制从浏览器访问实际图像。
脚本可以接收图像的Web路径,确定用户是否具有访问权限,然后使用fpassthru等内容将实际图像提供给浏览器。
然而,需要修改对图像的所有引用,以引用服务脚本。
所以不要使用/images/123/5423453245.jpg访问图像, 它将是/image.php?images/123/5423453245.jpg
或类似的东西。