1 檔案上傳防禦
1 檔案上傳目錄設定為不可執行
隻要Web容器無法解析該目錄下的檔案,即使攻擊者上傳了腳本檔案,伺服器本身也不會收到影響。很多大型網站的上傳應用,檔案上傳後會放到獨立的存儲上,做靜态檔案處理,一方面使用緩存加速,降低性能損耗;另一方面也杜絕了腳本執行的可能。
2 判斷檔案類型
判斷檔案類型時,結合使用MIME Type,字尾檢查等方式。在檔案類型檢查中,強烈推薦使用白名單,而不是黑名單的方式。
此外對于圖檔的處理,使用壓縮函數或者resize函數,在處理圖檔的同時破壞圖檔中可能包含的HTML代碼。
3 單獨設定檔案伺服器的域名
由于伺服器同源政策的關系,一系列用戶端攻擊将失效,比如上傳
crossdomain.xml,上傳包含JavaScript的XSS利用等問題将得到解決。能否如此設定,需要看具體的業務環境。
除此之外,檔案上傳功能,還要考慮到病毒,木馬,色情圖檔和視訊,反動政治檔案等與具體業務安全結合更緊密的問題,則需要做的工作就更多了。不斷的發現問題,結合業務需求,才能設計出合理的,最安全的上傳功能。
2 SQL注入的防禦
解決思路:
- 找到所有的SQL注入漏洞
- 修補這些漏洞
1 使用預編語句
防禦SQL注入的最佳方式,就是使用預編譯語句,綁定變量。
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiIwQjMx8CX39CXy8CXycXZpZVZnFWbpN0NlAXayR3cvwFduVWay9WLvRXdh9CXyI3Zv1UZnFWbp9zZuBnL2YWZmVjY3E2Y5kDN1AjMh1SMwkzMzgTMvw1cldWYtl2XkF2bsBXdvw1bp5SdoNnbhlmauMXZnFWbp1CZh9GbwV3Lc9CX6MHc0RHaiojIsJye.png)
2 使用存儲過程
效果與預編語句類似,差別在于存儲過程需要先将SQL語句定義在資料庫中。也肯呢個存在注入問題,避免在存儲過程中,使用動态的SQL語句。
3 檢查資料類型
4 使用安全函數
各種Web語言都實作了一些編碼函數,可以幫助對抗SQL注入。
5 其他
資料庫自身角度來說,應該使用最小權限原則,避免Web應用直接使用root,dbowner等高權限賬戶直接連結資料庫。為每個應用單獨配置設定不同的賬戶。Web應用使用的資料庫賬戶,不應該有建立自定義函數,操作本地檔案的權限。