摘要:整改一些業務系統時,加了資源文件權限,比如上傳,可能隨機命名,但總可能被猜到,猜到就能訪問到。否則不會有效果。
整改一些業務系統時,加了WEB資源文件權限,比如上傳doc,可能隨機命名,但總可能被猜到,猜到就能訪問到。
首先,禁止Url文件名直接訪問以Apache為例,在禁止訪問文件目錄(file_path)下新建 .htaccess
# 單個文件
# 多個文件(寫著就不讓訪問了)Order allow,deny Deny from all
如果是IIS .net,可以在“MIME類型”設置可訪問的資源文件后綴名
這樣一來,下面兩種方式都無法打開:
1、
http://localhost/images/qwert.jpg
2、
第二步,輸出文件 假設數據表是這樣設計的file_id | file_url | file_user_id |
---|---|---|
qwert_ooo | qwert.jpg | user1 |
12345_ooo | 12345.jpg | user2 |
備注:
1.Content-Disposition:
參數 | 作用 |
---|---|
inline | 用默認瀏覽器打開非圖片文件(Edge等瀏覽器有效,而Chrome一律選擇下載) |
attachment | 下載 |
2.上述代碼,ob_start()和ob_clean()需要一起使用,或者都不要,否則無法輸出任何文件,即使查看Header信息是正確的
官方文檔:輸出緩沖必須已被 ob_start() 以 PHP_OUTPUT_HANDLER_CLEANABLE 標記啟動。否則 ob_clean() 不會有效果。fileread.html 輸出文件