sql注入過(guò)濾哪些 java中preparedstatement為什么可以防止sql注入?
java中preparedstatement為什么可以防止sql注入?不知道樓主用沒(méi)有用過(guò) select * from tab_name where name= "" name "" and pass
java中preparedstatement為什么可以防止sql注入?
不知道樓主用沒(méi)有用過(guò)
select * from tab_name where name= "" name "" and passwd="" passwd ""
把其中passwd換成 [" or "1" = "1] 這樣就可以完成sql注入
更有可能對(duì)你的數(shù)據(jù)庫(kù)表drop操作
如果使用preparedstatement的話就可以直接使用預(yù)編譯,PreparedStatement不允許在插入時(shí)改變查詢(xún)的邏輯結(jié)構(gòu).
舉例
statement
select * from tab_name where name= "" name "" and passwd="" passwd ""
passwd就可以換成 ‘ or "1"="1
Statement stmt = con.createStatement()
ResultSet rs = stmt.executeQuery(sql)
preparedstatement
select * from tab_name where name=? and passwd=?
PreparedStatement pst = con.prepareStatement(sql)
pstmt.setString(1, name)
pstmt.setString(2, passwd)
ResultSet rs = pstmt.executeQuery()