SQL Injection
Concept
在輸入字串夾帶惡意SQL語句,來改變原有語意,達成竊取或破壞資料的行為
案例
後端SQL語句
1 | //後端sql |
前端輸入訊息
- account: 'OR 1=1–
- password: 'OR 1=1–
後端傳送到DB
1 | SELECT * |
- 因為OR 1=1 恆為True,所以就能不需要帳號密碼登入網站
- ‘OR 1=1 --,–目的在於清除後面的「’」
Solution
- 不要透過+號串接SQL語法
Query Parameterization
對SQL語句進行參數化查詢 => SQL 會形成Excution paln =>不會執行不符合的Excution plan
- 以Java來說,使用PreparedStatement取代Statement
reference
All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
Comment