1

.htaccessupload目录中有以下内容:

order allow,deny
deny from all

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

如何拒绝直接访问但允许 html“包含”(常规 html)?

4

3 回答 3

1

你需要打开 mod_rewrite,

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

请务必将“mydomain.com”替换为您自己的。

于 2012-05-11T17:41:10.957 回答
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,则图像很可能是从浏览器缓存中提供的,并且无论您是否有任何服务器配置,它都会出现
于 2012-05-11T17:48:57.250 回答
1

你想达到什么目的?您可以使用类似于此处所做的技术对图像进行base64编码并将它们放置在img标签的src属性中:http: //www.greywyvern.com/code/php/binary2base64

可能有更高级的方法来隐藏图像数据,但最终你无法阻止想要破解的人。

于 2012-05-11T17:54:24.977 回答