預防Web應用程序的漏洞 |
時間: 2013/2/16 10:43:54 點擊: 16688 |
第二道防線關注于保護重要的熱點,例如保護那些真正使用輸入域值的代碼行。
一個具體的例子就是SQL注入攻擊,它們大多數會使用單引號或雙引號。有些編程語言提供了對這些字符的轉碼機制,這樣它們就能用在SQL語句中了,但是只能用來在語句中分隔值。4但是這些技術有兩個問題。第一,更高級的注入技術,例如聯合使用引號和轉義字符,可以繞過這些機制。第二,引入轉義字符會增加字符串的長度,如果結果字符串的長度超過數據庫限制的話,可能會導致數據截斷。 正確使用參數化命令是預防注入攻擊最有效的方式。1在這種情況下,開發人員定義命令的結構,并使用占位符來代表命令的變量值。稍后,當應用程序將對應的值關聯到命令上時,命令解釋器會正確地使用它們而不會涉及到命令的結構。 這種技術最著名的用法是數據庫的預處理語句,也被稱為參數化查詢。4 當應用程序創建預處理語句時,語句發送到了數據庫端。應用程序使用占位符來表示查詢的可變部分,占位符通常會是問號或標簽。隨后,每次查詢執行時,應用程序都要往對應的可變部分綁定值。不管數據的內容是什么,應用程序會一直使用這個表達式作為一個值而并沒有SQL代碼。因此,不可能修改查詢的結構。 為了確保正確使用數據,很多語言允許類型綁定。但是預處理語句本身并不能修復不安全的語句——開發人員必須正確地使用它們。例如,像傳統語句一樣使用預處理語句——也就是使用字符串拼接來綁定SQL查詢——而不是對查詢的可變部分使用占位符會導致類似的漏洞。 輸出校驗 在將一個進程的輸出發送之前進行校驗能夠避免用戶收到他們不應該看到
|
上一篇: 馬云:做搜索是為了讓百度睡不著覺 下一篇: 網站流量之如何防止圖片浪費空間流量技巧 |