sql injection
如何防止SQL injection:Statement 和 PreparedStatement
2019/11/20 18:10:47
0
3083
什麼是SQL injection:
Sql Injection 應該可以說是目前網路上,駭客最常用的攻擊方式,因為攻擊方式簡單,又不需要使用任何軟體,或是自行撰寫程式,在輸入的字串之中夾帶SQL指令,在設計不良的程式當中忽略了檢查,那麼這些夾帶進去的指令就會被資料庫伺服器誤認為是正常的SQL指令而執行,因此遭到破壞。
攻擊方式:
某個網站的登入驗證的SQL查詢代碼為
惡意填入
與
時,將導致原本的SQL字串被填為
也就是實際上執行的SQL命令會變成下面這樣的
PreparedStatement
PreparedStatement 代表一個可以被執行多的預先編輯的 SQL statement 不用每次執行都要再編輯一次
安全的使用方式:
藉由使用 PrepareStatement 類別及綁定變數和相應的setString方法sql injection 可以被簡單的防堵
不安全的使用方式:
範例1:
以上程式碼無法有效防堵SQL injection,惡意程式可以被加進程式裡造成SQL injection
範例2:
以上的程式也無法有效的防堵SQL injection,即使使用了PreparedStatement類別