sql中#和$的区别

版权声明:如有转载请注明出处 https://blog.csdn.net/hdp134793/article/details/83069413

#{}在预编译的过程中会自动用一个占位符?代替变量 【预编译处理】

select * from user where name = ?;

${}在sql处理的过程中只是简单的字符串替换 【字符串替换】

select * from user where name = 'test';

#{} 的参数替换是发生在 DBMS 中,而 KaTeX parse error: Expected 'EOF', got '#' at position 26: …析过程中。 使用原则:优先使用#̲,其次是,另外 s q l 使 容易引起sql注入的安全性问题,具体看情况使用,传入的参数为表名的时候建议用 .
实际应用:like的使用,一般我们会用在sql的模糊匹配上,有时我们会这样使用
Like ‘%${}%’
Like ‘%#{}%’
Like ‘%’||#{}||’%’(||起到拼接作用)
那么这里就稍微讲解下有关sql注入攻击
一般sql注入都是发生在编译的过程中,通过恶意注入特殊字符等操作,使得编译后形成恶意的操作执行,这样的话势必会对数据库操作有严重的影响,因而安全得不到保障。
但是预编译的话就能很好的规避这个问题啦,提前对sql进行预编译处理,而其后注入的参数不再对其进行sql编译。

猜你喜欢

转载自blog.csdn.net/hdp134793/article/details/83069413