通過把sql命令插入到web表單提交或輸入網域名稱或頁面請求的查詢字串,最終達到欺騙伺服器執行惡意的sql命令。
在使用者名稱輸入框中輸入:' or 1=1#
,密碼隨便輸入,這時候的合成後的sql查詢語句為#
在mysql中是注釋符,這樣井號後面的內容將被mysql視為注釋內容,這樣就不會去執行了,等價於
select * from users where username='' or 1=1
sql 注入是php應用中最常見的漏洞之一。事實上令人驚奇的是,開發者要同時犯兩個錯誤才會引發乙個sql注入漏洞,乙個是沒有對輸入的資料進行過濾(過濾輸入),還有乙個是沒有對傳送到資料庫的資料進行轉義**義輸出)。這兩個重要的步驟缺一不可,需要同時加以特別關注以減少程式錯誤。
幸運的是,sql注入是很容易避免的,只堅持過濾輸入和轉義輸出。
雖然兩個步驟都不能省略,但只要實現其中的乙個就能消除大多數的sql注入風險。如果你只是過濾輸入而沒有轉義輸出,你很可能會遇到資料庫錯誤(合法的資料也可能影響sql查詢的正確格式),但這也不可靠,合法的資料還可能改變sql語句的行為。另一方面,如果你轉義了輸出,而沒有過濾輸入,就能保證資料不會影響sql語句的格式,同時也防止了多種常見sql注入攻擊的方法。
當然,還是要堅持同時使用這兩個步驟。過濾輸入的方式完全取決於輸入資料的型別,但轉義用於向資料庫傳送的輸出資料只要使用同乙個函式即可。對於mysql使用者,可以使用函式mysql_real_escape_string():或者使用php自帶的addslashes()
方法轉義字串。
php如何防止SQL注入
說明 判斷傳遞的變數中是否含有非法字元 如 post get 功能 防注入 要過濾的非法字元 arrfiltrate array union add 出錯後要跳轉的url,不填則預設前一頁 是否存在陣列中的值 function funstringexist strfiltrate,arrfiltra...
PHP如何防止SQL注入
一 引言 php是一種力量強大但相當容易學習的伺服器端指令碼語言,即使是經驗不多的程式設計師也能夠使用它來建立複雜的動態的web站點。然而,它在實現網際網路服務的秘密和安全方面卻常常存在許多困難。在本系列文章中,我們將向讀者介紹進行web開發所必需的安全背景以及php特定的知識和 你可以藉以保護你自...
php中如何防止sql注入
1.什麼時候最易受到sql注入攻擊 當應用程式使用輸入內容來構造動態sql語句,以訪問資料庫時會發生sql注入攻擊 2.如何防止sql注入 a.永遠不要相信使用者的輸入,對使用者輸入進行校驗,可以通過正規表示式,或限制長度,對單引號和 進行轉換 不建議使用 user htmlspecialchars...