Apache 保护图像不受直接URL访问?
我目前正在使用php、apache服务器和symfony进行一个项目。我试图实现的是阻止我的图像通过URL栏直接访问。我已经试过使用Apache 保护图像不受直接URL访问?,apache,.htaccess,hotlinking,Apache,.htaccess,Hotlinking,我目前正在使用php、apache服务器和symfony进行一个项目。我试图实现的是阻止我的图像通过URL栏直接访问。我已经试过使用选项All-Indexes,但它不起作用,我不知道我是否做错了什么,我也试过一些帖子中的东西,比如: RewriteEngine on RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost
选项All-Indexes
,但它不起作用,我不知道我是否做错了什么,我也试过一些帖子中的东西,比如:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC]
RewriteRule \.(gif|jpg|png)$ - [F]
改变
选项包括以下索引ymlinks多视图
到
我还确信我的httpd.conf文件具有AllowOverride All
我真的不知道还能做什么。我被困在这个问题上太久了,如果你看到我的解决方案中有任何错误,或者你有任何建议,我会非常感谢他们。提前谢谢
编辑
我确实想继续在我的站点中显示这些图像,但我不想让其他用户通过直接URL访问它们。在
apache2.conf
中(至少我在其中测试过):
要求全部拒绝
注意:这将阻止对文件的访问,即使是从HTML文件中。在页面上显示它们的唯一方法是将它们包含在PHP中生成的HTML中。我也有类似的问题,但在我的例子中,我使用了一些文件夹(上传)来保存用户上传的文件(个人资料图片等),然后我只需要为某些用户(帐户所有者和他的联系人)显示这些文件 我的解决方案: 1) 在security.yml中,关闭除超级管理员之外的所有用户的上载文件夹
security:
access_control:
- { path: ^/uploads/, role: ROLE_SUPER_ADMIN }
2) 如果您需要用户能够从服务器下载文件,请创建控制器来处理此问题
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class DownloadController extends Controller
{
public function downloadAction(Request $request, $filepath = null)
{
if ($filepath){
$response = new BinaryFileResponse($filepath);
return $response;
}
}
}
您想阻止对文件的访问,无论是什么,还是仅当文件直接从URL栏访问时?对不起,我在回答中假设了前者。没有可靠的方法可以做到这一点。这不值得费心。好吧,你可以用我的答案完全阻止访问。我假设OP将使用PHP或其他东西将文件加载到数据URI中,这样就永远不会使用图像的潜在URL。我也这么做,但我的URL仍然是公共的,未经授权的用户可以看到图像检查your security.yaml并确保您的控制器位于启用了安全性的防火墙后面。你下载行动的路径是什么?
security:
access_control:
- { path: ^/uploads/, role: ROLE_SUPER_ADMIN }
use Symfony\Component\HttpFoundation\BinaryFileResponse;
class DownloadController extends Controller
{
public function downloadAction(Request $request, $filepath = null)
{
if ($filepath){
$response = new BinaryFileResponse($filepath);
return $response;
}
}
}