什麼是SQL注入
SQL注入是指將刻意構造的參數傳遞給SQL語句,使SQL語句不按預期的行爲執行,從而暴露一些敏感信息或產生未預期的結果。
如上圖所示,用於進行登陸時,將用戶名改爲username AND 1=1 /*,因爲/*後面的內容被註釋了,因而後臺在判斷是否密碼是否正確時並無比較密碼,因此任何帳號均可以直接登陸。html
SQL注入場景
如何預防SQL注入
- 預編譯SQL
a) 使用JDBC時,執行SQL應使用PreparedStatement;
b) 使用MyBatis時,配置文件中參數應使用#拼接,避免使用$符拼接;
- 使用白名單方式驗證用戶輸入數據
- 對用戶輸入數據進行轉義
對SQL字符串進行轉義能夠調用common-lang提供的接口StringEscapeUtils.escapeSql()
參考:
SQL Injection Preventionspa