天天看點

Web安全防禦(上)1 檔案上傳防禦2 SQL注入的防禦

1 檔案上傳防禦

1 檔案上傳目錄設定為不可執行

隻要Web容器無法解析該目錄下的檔案,即使攻擊者上傳了腳本檔案,伺服器本身也不會收到影響。很多大型網站的上傳應用,檔案上傳後會放到獨立的存儲上,做靜态檔案處理,一方面使用緩存加速,降低性能損耗;另一方面也杜絕了腳本執行的可能。

2 判斷檔案類型

判斷檔案類型時,結合使用MIME Type,字尾檢查等方式。在檔案類型檢查中,強烈推薦使用白名單,而不是黑名單的方式。

此外對于圖檔的處理,使用壓縮函數或者resize函數,在處理圖檔的同時破壞圖檔中可能包含的HTML代碼。

3 單獨設定檔案伺服器的域名

由于伺服器同源政策的關系,一系列用戶端攻擊将失效,比如上傳

crossdomain.xml,上傳包含JavaScript的XSS利用等問題将得到解決。能否如此設定,需要看具體的業務環境。

除此之外,檔案上傳功能,還要考慮到病毒,木馬,色情圖檔和視訊,反動政治檔案等與具體業務安全結合更緊密的問題,則需要做的工作就更多了。不斷的發現問題,結合業務需求,才能設計出合理的,最安全的上傳功能。

2 SQL注入的防禦

解決思路:

- 找到所有的SQL注入漏洞

- 修補這些漏洞

1 使用預編語句

防禦SQL注入的最佳方式,就是使用預編譯語句,綁定變量。

Web安全防禦(上)1 檔案上傳防禦2 SQL注入的防禦
2 使用存儲過程

效果與預編語句類似,差別在于存儲過程需要先将SQL語句定義在資料庫中。也肯呢個存在注入問題,避免在存儲過程中,使用動态的SQL語句。

Web安全防禦(上)1 檔案上傳防禦2 SQL注入的防禦
3 檢查資料類型
Web安全防禦(上)1 檔案上傳防禦2 SQL注入的防禦
4 使用安全函數

各種Web語言都實作了一些編碼函數,可以幫助對抗SQL注入。

Web安全防禦(上)1 檔案上傳防禦2 SQL注入的防禦
5 其他

資料庫自身角度來說,應該使用最小權限原則,避免Web應用直接使用root,dbowner等高權限賬戶直接連結資料庫。為每個應用單獨配置設定不同的賬戶。Web應用使用的資料庫賬戶,不應該有建立自定義函數,操作本地檔案的權限。