mysql SQL注入攻击 解决Orm工具Hibernate,Mybatis, MiniDao 的 sql 预编译语句 ;解决非Orm工具JDBCTemplate的

sql 预编译语句_牛客博客
https://blog.nowcoder.net/n/198be55df4a4406d8eb9dc2482272061?from=nowcoder_improve

hibernate sql 注入 - 国内版 Bing
https://cn.bing.com/search?q=hibernate+sql+注入&qs=n&form=QBRE&sp=-1&pq=hibernate+sql+注入&sc=0-16&sk=&cvid=A6C0E9EBECBA4A3D882E116FE3ADE171

Mybatis 框架下 SQL 注入攻击的 3 种方式,真是防不胜防! - 知乎
https://zhuanlan.zhihu.com/p/210732421

Hibernate HQL注入攻击入门 - tian830937 - 博客园
https://www.cnblogs.com/tian830937/p/4456500.html

Hibernate HQL注入攻击入门 – 小马博客
https://www.i0day.com/1666.html

怎样利用Hibernate来防止SQL注入的方法-mysql教程-PHP中文网
https://www.php.cn/mysql-tutorials-373616.html

hibernate规避SQL注入实例 - 不想下火车的人 - 博客园
https://www.cnblogs.com/wuxun1997/p/10133010.html

Hibernate框架中的HQL注入漏洞_Exploit的小站~-CSDN博客_hql注入
https://blog.csdn.net/u011721501/article/details/43918203

使用Hibernate防止SQL注入的方法 - 卡洛斯利伯 - 博客园
https://www.cnblogs.com/klslb/p/7146889.html

sql预编译 - 国内版 Bing
https://cn.bing.com/search?FORM=U227DF&PC=U227&q=sql预编译

mybatis深入理解(一)之 # 与 $ 区别以及 sql 预编译 - SegmentFault 思否
https://segmentfault.com/a/1190000004617028#:~:text=sql预编译 定义 sql 预编译指的是数据库驱动在发送 sql 语句和参数给 DBMS 之前对 ,sql%20%E6%97%B6%EF%BC%8C%E5%B0%B1%E4%B8%8D%E9%9C%80%E8%A6%81%E9%87%8D%E6%96%B0%E7%BC%96%E8%AF%91%E3%80%82%20%E4%B8%BA%E4%BB%80%E4%B9%88%E9%9C%80%E8%A6%81%E9%A2%84%E7%BC%96%E8%AF%91%20JDBC%20%E4%B8%AD%E4%BD%BF%E7%94%A8%E5%AF%B9%E8%B1%A1%20PreparedStatement%20%E6%9D%A5%E6%8A%BD%E8%B1%A1%E9%A2%84%E7%BC%96%E8%AF%91%E8%AF%AD%E5%8F%A5%EF%BC%8C%E4%BD%BF%E7%94%A8%E9%A2%84%E7%BC%96%E8%AF%91%20%E9%A2%84%E7%BC%96%E8%AF%91%E9%98%B6%E6%AE%B5%E5%8F%AF%E4%BB%A5%E4%BC%98%E5%8C%96%E3%80%82

jdbcTemplate sql 注入 - 国内版 Bing
https://cn.bing.com/search?q=jdbcTemplate+sql+注入&qs=n&form=QBRE&sp=-1&pq=jdbctemplate+sql+注入&sc=0-19&sk=&cvid=1BAE8BD1D33C466F97BA7F2EDB18FF15

JDBCtemplate防范Sql注入攻击 - 简书
https://www.jianshu.com/p/c1a92243b1f2

Spring boot JdbcTemplate sql注入测试 - 妇愁者纞萌 - 博客园
https://www.cnblogs.com/fczlm/p/14293888.html

【spring】jdbcTemplate之sql参数注入 - 淡丶无欲 - 博客园
https://www.cnblogs.com/VergiLyn/p/6161081.html

SQL 注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
在使用JAVA ORM时基本不用担心防范SQL injection,而在使用JDBCtemplate时,由于用到了sql命令,所以可能会注意对Sql注入得防范。
下面以sql语句
select * from table_name where id = 1 OR 1=1
为例进行分析。

Demo1
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody
List getCustomerByid(@RequestParam String id) {
return jdbcTemplate.query(
"SELECT * FROM customers WHERE ?",
new CustomerMapper(),id);
}
在postman中进行实验

可以看到JDBCtemplate对参数化sql查询进行了验证,从而防范了sql注入。

Demo2
@RequestMapping(method = RequestMethod.GET)
public @ResponseBody
List getCustomerByid(@RequestParam String id) {
String sql = "SELECT * FROM customers WHERE +id";
return jdbcTemplate.query(sql, new CustomerMapper());
}
在postman中进行实验

Paste_Image.png

在这种直接拼接sql语句的情况下,发生了sql入侵。

总结
JDBCtemplate中对参数化的sql查询有着良好的验证机制,因此建议使用参数化SQL的方式

SQL 注入就是通过把SQL命令插入到Web表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。
在使用JAVA ORM时基本不用担心防范SQL injection,而在使用JDBCtemplate时,由于用到了sql命令,所以可能会注意对Sql注入得防范。
下面以sql语句

在这种直接拼接sql语句的情况下,发生了sql入侵。

总结
JDBCtemplate中对参数化的sql查询有着良好的验证机制,因此建议使用参数化SQL的方式

作者:0xCoffee
链接:https://www.jianshu.com/p/c1a92243b1f2
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

mysql SQL注入攻击 解决Orm工具Hibernate,Mybatis, MiniDao 的 sql 预编译语句 ;解决非Orm工具JDBCTemplate的 - rgqancy(任国强) - 博客园
https://www.cnblogs.com/rgqancy/p/15046439.html

参数化 SQL - 国内版 Bing
https://cn.bing.com/search?FORM=U227DF&PC=U227&q=参数化+SQL

SQL参数化查询 - whatgorun - 博客园
https://www.cnblogs.com/kdp0213/p/8554032.html#:~:text=参数化查询 (Parameterized Query 或 Parameterized ,Statement%29%E6%98%AF%E6%8C%87%E5%9C%A8%E8%AE%BE%E8%AE%A1%E4%B8%8E%E6%95%B0%E6%8D%AE%E5%BA%93%E9%93%BE%E6%8E%A5%E5%B9%B6%E8%AE%BF%E9%97%AE%E6%95%B0%E6%8D%AE%E6%97%B6%EF%BC%8C%E5%9C%A8%E9%9C%80%E8%A6%81%E5%A1%AB%E5%85%A5%E6%95%B0%E5%80%BC%E6%88%96%E6%95%B0%E6%8D%AE%E7%9A%84%E5%9C%B0%E6%96%B9%EF%BC%8C%E4%BD%BF%E7%94%A8%E5%8F%82%E6%95%B0%20%28Parameter%29%20%E6%9D%A5%E7%BB%99%E5%80%BC%EF%BC%8C%E8%BF%99%E4%B8%AA%E6%96%B9%E6%B3%95%E7%9B%AE%E5%89%8D%E5%B7%B2%E8%A2%AB%E8%A7%86%E4%B8%BA%E6%9C%80%E6%9C%89%E6%95%88%E5%8F%AF%E9%A2%84%E9%98%B2SQL%E6%B3%A8%E5%85%A5%E6%94%BB%E5%87%BB%20%28SQL%20Injection%29%20%E7%9A%84%E6%94%BB%E5%87%BB%E6%89%8B%E6%B3%95%E7%9A%84%E9%98%B2%E5%BE%A1%E6%96%B9%E5%BC%8F%E3%80%82

posted @ 2021-07-22 21:16  rgqancy  阅读(413)  评论(0)    收藏  举报