拒绝直接访问,但允许普通的HTML(Deny direct access but allow reg

2019-10-16 16:43发布

我有如下.htaccess里面upload目录:

order allow,deny
deny from all

我想允许<img src="upload/image.png" />但得到forbbiden错误(403)。

我怎么能拒绝直接访问,但允许HTML“包容”(普通HTML)?

Answer 1:

你不能(可靠)。

不论是直接观看或作为<img>标记,浏览器仍使于请求http://yoursite.example.com/upload/image.png ,两个请求将基本上是相同的,只要服务器而言。

现在大多数浏览器,来自请求<img>标签将伴随着Referer: HTTP标头,你可以在你的Apache配置使用,但是筛选这些请求,:

  • 这不会保护你的形象,他们可以被任何人试图获得图像,例如在命令行中添加: curl -e 'http://my_referer.example.com' 'http://yoursite.example.com/upload/image.png'
  • 人们通过网页看到的图像后,如果他们键入URL到其地址栏中的图像可能会从他们的浏览器缓存中,它就会出现无论任何服务器的配置必须到位


Answer 2:

你需要的mod_rewrite上,

RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?mydomain.com/.*$ [NC]
RewriteRule \.(gif|jpg|js|css)$ - [F]

一定要与自己更换“mydomain.com”。



Answer 3:

你想达到什么目的? 你可以Base64编码的图像,并把它们放到img标签的src属性本身内,使用类似的技术,什么都是在这里完成: http://www.greywyvern.com/code/php/binary2base64

有可能是更先进的方式来掩盖图像数据,但最终你不能把它从谁想要破解各地的人。



文章来源: Deny direct access but allow regular html