Php 禁止使用浏览器url直接访问图像
我有一个名为-Images的文件夹。此文件夹包含用户配置文件图片。现在,用户只需随时将图像URL复制到浏览器即可查看其图像。这样他也可以看到其他用户的个人资料图片。我想要实现的是——用户应该只能通过我网站上的PHP页面看到他的个人资料图片。如果用户直接输入图像URL,则不应显示图像URL 我试图使用.htaccess实现这一点。这是我在.htaccess文件中的内容:Php 禁止使用浏览器url直接访问图像,php,apache,.htaccess,hotlinking,Php,Apache,.htaccess,Hotlinking,我有一个名为-Images的文件夹。此文件夹包含用户配置文件图片。现在,用户只需随时将图像URL复制到浏览器即可查看其图像。这样他也可以看到其他用户的个人资料图片。我想要实现的是——用户应该只能通过我网站上的PHP页面看到他的个人资料图片。如果用户直接输入图像URL,则不应显示图像URL 我试图使用.htaccess实现这一点。这是我在.htaccess文件中的内容: RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{H
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mysite.com/
RewriteRule \.(gif|jpg)$ http://www.mysite.com/errorpost.jpg [R,L]
我不熟悉.htaccess。如果有办法做到这一点,请帮助
提前谢谢。我也有同样的问题。目前我找到了两种方法: 1)base64_encode()+ajax+js/jquery
- 将base64_encode()编码的每个图像存储在二进制文件或www文件夹外的数据库中
- 使用ajax获取这些数据。它应该返回“data:image/jpeg;base64$enc_imgbinary”
- 使用js/jquery将“img”属性的“src”替换为返回的结果
- 无法使用直接链接访问图像
- 我没有发现类似的解决方案的视频
- 图像应该事先编码(或第一次使用),以最大限度地减少服务器CPU的使用
- 编码图像占用的磁盘空间增加约30%=>1.3倍磁盘空间
- 如果要在服务器上保留原始映像=>2.3倍的磁盘空间
- 通过网络发送的数据将增加约30%
B) 使用指向www文件夹的符号链接在www文件夹外存储图像。 (www以外的图像也可以用作桌面图像备份)
注:
- 文件夹还必须包含随机符号
- 在任何文件夹或文件名=>之前使用“.”,以防在未配置的apache上显示文件夹内容
- 将apache配置为案例B中的follow符号链接(将FlowSymlinks添加到httpd.conf)
- 配置apache以防止文件夹内容列表(从httpd.conf中删除索引)
- 图像层次结构示例:
- 万维网
- .media_jmdue7jed
- .user1\u散列\u!SDFSEWFWSDFSDS
- .album1\u name\u!jfie8e7y77667fef
- .photo1_name_!kjio9i890v8fsd978fyreshf
- .photo2_name_!09098dfuujdsif87s7ysdffd
- .album2\u name\u!Ghyuflp!huidfjh
- .photo1_name_!Feojihudhuuhfrufhi8484
- .photo2_name_!2344GFDGDFEFEDW232SDG
- .album1\u name\u!jfie8e7y77667fef
- .user1\u散列\u!j333re89dsfdsf
- .user1\u散列\u!SDFSEWFWSDFSDS
- .media_jmdue7jed
- 万维网
- 也可用于视频
- 通过使用长随机名称创建指向www文件夹的符号链接,您仍然可以将具有原始名称的原始图像保留在www文件夹之外。甚至每个用户都不一样
- 图像可以在您的服务器外使用(在论坛中,快速发送直接链接到您的朋友或类似者)
- 符号链接必须事先创建(或动态创建)
- 图像可以通过直接链接访问
- 然而,这几乎是不可能的猜测
- 您还可以定期更改符号链接随机名称或更改图像权限(我要求google+这样做)
- 地图原名→ 长随机名称应存储在db(或sidecard/meta文件)中
- (如果通过编码/解码或结合原始名称+长随机名称将原始名称保留在长随机名称中,则可以绕过此选项)
如果有人看到安全漏洞,请告诉我。我使用的上述方法不起作用。当键入图像url时,它仍然显示图像。查看这是否有助于您:您希望解决的问题是什么。你想阻止人们查看不允许他们查看的个人资料图像吗?@Gerben。。假设我正在查看我的个人资料。通过查看源代码,我可以看到我的个人资料图片的图像位置。然后我将该url粘贴到地址栏,图像就会打开。现在我希望用户不能通过这种方式直接访问图像。是否可以限制用户直接查看图像。应该允许他使用我创建的PHP页面作为配置文件页面来查看图像。这样他就猜不到其他用户的url,也看不到他们的图像。为个人资料图像生成伪随机文件名应该可以解决这个问题。e、 g.使用配置文件id的md5作为图像文件名。