【安全】SQL注入

什麼是SQL注入

SQL注入是指將刻意構造的參數傳遞給SQL語句,使SQL語句不按預期的行爲執行,從而暴露一些敏感信息或產生未預期的結果。
image.png
如上圖所示,用於進行登陸時,將用戶名改爲username AND 1=1 /*,因爲/*後面的內容被註釋了,因而後臺在判斷是否密碼是否正確時並無比較密碼,因此任何帳號均可以直接登陸。html

SQL注入場景

如何預防SQL注入

  1. 預編譯SQL
    a) 使用JDBC時,執行SQL應使用PreparedStatement;
    b) 使用MyBatis時,配置文件中參數應使用#拼接,避免使用$符拼接;
  2. 使用白名單方式驗證用戶輸入數據
  3. 對用戶輸入數據進行轉義
    對SQL字符串進行轉義能夠調用common-lang提供的接口StringEscapeUtils.escapeSql()

參考:
SQL Injection Preventionspa

相關文章
相關標籤/搜索