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