2007年1月10日 星期三

Web Application Firewall

話說前一陣子在測試學校內首頁的bug,發現不少SQL Injection以及套裝軟體(XOOPS、phpbb)未更新等問題存在,小弟有向上反應這些問題,不過到目前為止有修正的並不多,所以無法從程式根本去解決這些問題,在這裡不免要提到php,新版的php在接收post與get的值會把容易造成SQL Injection的字串處理掉,這樣可以避免php程式未處理輸入字串造成SQL Injection的問題,不過這也僅限於新版php才有的功能,最好的解決方法應該是有一種獨立於web server之外的L7防火牆,這類軟體稱為Web Application Firewall(WAF,網頁應用程式防火牆),網路上搜尋了一下會發現大部分使用的是modsecurity這個可以與apache搭配的WAF,它可以過濾常見的攻擊包括XSS、SQL Injection...等等,不過本站使用的是lighttpd而不是apache,所以無法使用模組的方式使用modsecurity,剛剛去lighttpd翻了一下也沒發現相關討論,不過應該可以利用proxy模組將需要過濾的頁面導向裝有modsecurity的apache來達成,如果問小弟,為什麼不直接換apache?,因為apache的速度明顯比lighttpd慢,尤其在輸出大量圖檔的網頁(ex:網頁之翼)十分明顯,所以本站使用lighttpd當成預設web server。

modsecurity官方
http://www.modsecurity.org