保护会员区域中的图像等

时间:2012-09-05 14:29:33

标签: php web security

我创建了一个简单的PHP网站,其中包含两个区域 - 公共区域和成员资格。一切都很好。登录工作和网页都受到非成员用户的保护。但是,我似乎无法保护对会员专用图片的直接访问。通过直接输入图片的完整网址,我可以在不登录的情况下完整查看 - 即http://www.mysite.com/members/gregs_funny_cat.jpg

有没有办法通过脚本禁止这种访问?该网站位于网站上,我无法访问.httpaccess。

3 个答案:

答案 0 :(得分:1)

如果您有权访问这样的目录,请将您的图像放在apache目录之外。那可能是父目录或它的子目录......  编写PHP脚本以从那里打开文件,并在检查用户是否已登录后将其发送到浏览器。

答案 1 :(得分:0)

您可以使用PHP读取图像文件,并仅使用相应的标题将其回显给已登录的用户。

之类的东西
if($userLoggedIn)
{ 
    $f = file_get_contents("path/to/jpeg/file.jpg");

    header('Content-Type: image/jpeg');
    echo $f;
}

@Lex comment所示,您应该将它们放在webroot文件夹上。

答案 2 :(得分:0)

如果您有文件,我会将文件放在根文件夹之外。然后通过php包装器调用文件,即<img src="files/file.php?id=01341" />,如果用户有权查看文件,则在file.php中输出带有图像标题的文件。在表中,您拥有与您的01341令牌对应的真实图像URI,这就是file.php加载并作为图像输出到请求者的内容。这样,服务器文件的真实URi就会隐藏,您可以检查每个图像加载的访问权限。