W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
#{} 是預(yù)編譯處理,像傳進來的數(shù)據(jù)會加個" "(#將傳入的數(shù)據(jù)都當成一個字符串,會對自動傳入的數(shù)據(jù)加一個雙引號)
${} 就是字符串替換。直接替換掉占位符。$方式一般用于傳入數(shù)據(jù)庫對象,例如傳入表名.
使用 ${} 的話會導(dǎo)致 sql 注入。什么是 SQL 注入呢?比如 select * from user where id = ${value}
value 應(yīng)該是一個數(shù)值吧。然后如果對方傳過來的是 001 and name = tom。這樣不就相當于多加了一個條件嘛?把SQL語句直接寫進來了。如果是攻擊性的語句呢?001;drop table user,直接把表給刪了
所以為了防止 SQL 注入,能用 #{} 的不要去用 ${}
如果非要用 ${} 的話,那要注意防止 SQL 注入問題,可以手動判定傳入的變量,進行過濾,一般 SQL 注入會輸入很長的一條 SQL 語句
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: