sql中#和$的區別

#{}在預編譯的過程中會自動用一個佔位符?代替變量 【預編譯處理】

select * from user where name = ?;

${}在sql處理的過程中只是簡單的字符串替換 【字符串替換】

select * from user where name = 'test';

#{} 的參數替換是發生在 DBMS 中,而 KaTeX parse error: Expected 'EOF', got '#' at position 26: …析過程中。 使用原則:優先使用#̲,其次是,另外sql使容易引起sql注入的安全性問題,具體看情況使用,傳入的參數爲表名的時候建議用.
實際應用:like的使用,一般我們會用在sql的模糊匹配上,有時我們會這樣使用
Like ‘%${}%’
Like ‘%#{}%’
Like ‘%’||#{}||’%’(||起到拼接作用)
那麼這裏就稍微講解下有關sql注入攻擊
一般sql注入都是發生在編譯的過程中,通過惡意注入特殊字符等操作,使得編譯後形成惡意的操作執行,這樣的話勢必會對數據庫操作有嚴重的影響,因而安全得不到保障。
但是預編譯的話就能很好的規避這個問題啦,提前對sql進行預編譯處理,而其後注入的參數不再對其進行sql編譯。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章