簡體   English   中英

如何防止文件直接 URL 訪問?

[英]How to prevent a file from direct URL Access?

我正在使用 Apache,並且我的本地主機上有一個示例 Web 文件夾,例如:

      http://localhost/test/

test文件夾中的文件:

     index.html  
     sample.jpg  
     .htaccess  

index.html示例來源:

<html>
  <body>
    <img src="sample.jpg" />
  </body>
</html>

當我在http://localhost/test/運行網站時,它只會在頁面上顯示圖像“sample.jpg”。


問題:

  • 我想防止圖像直接在 url 欄中顯示為http://localhost/test/sample.jpg

注意:我發現以下解決方案在除 Firefox 之外的所有瀏覽器上進行測試時都有效。

請嘗試以下操作:

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

返回 403,如果您直接訪問圖像,但允許它們在站點上顯示。

注意:有可能當你打開一些帶有圖片的頁面,然后將該圖片的路徑復制到地址欄中時,你可以看到該圖片,這只是因為瀏覽器的緩存,實際上該圖片尚未從服務器加載(來自達沃,完整評論如下)

羅西波夫的規則很好用!

我在實時站點上使用它來顯示空白或特殊消息 ;) 代替對文件的直接訪問嘗試,我寧願保護一些免於直接查看。 我認為它比 403 Forbidden 更有趣。

因此,按照 rosipov 的規則,將任何對 {gif,jpg,js,txt} 文件的直接請求重定向到 'messageforcurious' :

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?domain\.ltd.*$ [NC] 
RewriteRule \.(gif|jpg|js|txt)$ /messageforcurious [L]

我認為這是一種禮貌的方式,禁止直接訪問 CMS敏感文件,例如 xml、javascript ......並牢記安全性:對於當今所有這些在網絡上亂寫的機器人,我想知道他們的算法會從我的 '消息很奇怪'。

根據您的評論,這就是您所需要的:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost/ [NC] 
RewriteRule \.(jpe?g|gif|bmp|png)$ - [F,NC]

我已經在我的本地主機上測試過它,它似乎工作正常。

首先,找到主apache的配置文件httpd.conf所在的位置。 如果你使用 Debian,它應該在這里: /etc/apache/httpd.conf 使用諸如 Vim 或 Nano 之類的文件編輯器打開此文件並找到如下所示的行:

Options Includes Indexes FollowSymLinks MultiViews

然后刪除單詞索引並保存文件。 該行應如下所示:

Options Includes FollowSymLinks MultiViews

完成后,重新啟動apache(例如Debian 中的/etc/init.d/apache restart)。 而已!

對我來說,這是唯一有效的方法,而且效果很好:

RewriteCond %{HTTP_HOST}@@%{HTTP_REFERER} !^([^@] )@@https?://\\1/.
重寫規則 .(gif|jpg|jpeg|png|tif|pdf|wav|wmv|wma|avi|mov|mp4|m4v|mp3|zip?)$ - [F]

在以下位置找到它: https : //simplefilelist.com/how-can-i-prevent-direct-url-access-to-my-files-from-outside-my-website/

當我在我的 Web 服務器上使用它時,我只能重命名本地主機,如下所示:

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM