WordPress不讓上傳.rar格式附件的原因及解決辦法

使用最新的WordPress2.9.2,發現不能上傳rar附件。搜索了一下,找到一個插件PJW Mime Config可以解決此問題。

其設置界面如下:

WordPress不讓上傳.rar格式附件的原因及解決辦法

 

其中ac3、mpa、flv是插件自帶的設置,rar那行是我添加上去的。問題是添加時除了要填擴展名(File Extension)還得填Associated mime-type。蒙着瞎填了一個rar/rar,測試可以上傳rar格式的附件了。可不放心,google了一下rar mime,找到下面的文字。

注意:經測試,本情況發生在少量配置有問題的服務器上,一般正式版apache無此問題。
一般的網站都會開放rar附件上傳,並可能會保留原來文件名稱,這從而可能導致一個很嚴重的問題,xxx.php.rar文件會被Apache當作php文件來執行, 造成極大的安全隱患。
    如何測試?將你的某個php程序文件後綴名修改成 xxx.php.rar ,這時測試一下,還是按照PHP文件解析執行,Apache並不會認爲這是一個rar文件,這是爲什麼呢?
    原來,每遇到一種後雙重後綴名(如xxx.php.rar)的文件,Apache都會去conf/mime.types 文件中檢查最後一個後綴,如果最後一個後綴並沒有在mime.types文件中定義,則使用前一個後綴來解釋,因爲在默認情況下,rar並未在mime.types中定義,故Apache會使用php後綴來解釋文件,這就是漏洞的原因所在。
    由此類推,如果使用xxx.jsp.ppp.rar 則會認爲是jsp文件,如果修改成xxx.shtml.rar ,則會識別成shtml文件。a.php.c.d.e.rar 也是會被當成PHP文件解釋的!想想,不知道有多少網站存在這個問題?
    那麼針對網絡管理員,如何杜絕這個隱患?
1、修改mime.types文件,在最後面加一條:
    application/rar            rar
    然後重新啓動Apache,即可。
   針對WEB管理員及WEB程序開發者,如何更安全?
1)只允許上傳指定後綴名的文件,當然,要禁止掉rar格式文件上傳。(但這條往往行不通,一般的網站都需要上傳rar文件)
2)對上傳後的文件進行強制重命名, 強制使用最後一個擴展名,如原始文件名爲xxx.php.rar ,上傳後強制重命名爲 20080912.rar即可避免這個隱患。
   早期版本的phpcms 2007,discuz,ecshop都存在這個漏洞,或許你的網站被掛馬,就是因此引起。

上面的文章是轉載的,測試了一下,還真這樣,不過修改mime.types是沒有用的。
需要在http.conf中加入下面這些內容:
AddType application/rar .rar
AddType application/x-compressed .rar
AddType application/x-rar .rar
AddType application/x-rar-compressed .rar
AddType application/x-rar-compressed; application/x-compressed .rar
AddType compressed/rar; application/x-rar-compressed .rar
這樣就不會出問題了,測試過了,加上面這些是沒有問題的。

看來WordPress禁掉rar作爲附件上傳是有其道理的,而PJW Mime Config也確實比很多靠取消文件格式校驗來實現rar文件上傳的辦法要嚴謹的多,前提是,你認認真真填寫了Associated mime-type。

我一直認爲網站的文件下載應該使用zip格式,這樣不但安全,而且windows系統可以不借助任何軟件直接解壓。由於還是對網上文字的權威性抱有懷疑,我決定今後還是按照WordPress的規定走,不打開rar文件格式的上傳。

————————————————————————————————

今兒研究了一天的WordPress,真是相見恨晚。
本來,我看中WordPress的最首要之處,只在於其多到令人歎爲觀止的主題模板。可試用之後卻發現,wp實在不簡單,原來博客應該是這個樣子滴,這才叫真正的博客平臺嘛!
google趨勢上有關WordPress搜索量的統計,從04年到現在一路攀升。可以說WordPress與blog文化相伴,對Web 2.0的高速發展起到了不可替代的推動作用。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章