JDBCtemplate防范Sql注入攻击

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<Customer> 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<Customer> 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的方式。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Web安全简史 在Web1.0时代,人们更多是关注服务器端动态脚本语言的安全问题,比如将一个可执行脚本(俗称Web...
    潘良虎阅读 9,349评论 3 72
  • 姓名:于川皓 学号:16140210089 转载自:https://baike.baidu.com/item/sq...
    道无涯_cc76阅读 6,022评论 0 2
  • 随着当今世界网络技术与信息技术高速发展,Web应用程序具有界面统一,使用简单,易于维护,扩展性好,共享度高等优先。...
    高美丽阅读 9,522评论 0 4
  • [SQL注入攻击] SQL注入攻击是黑客对数据库进行攻击的常用手段之一。随着B/S模式应用开发的发展,使用这种模式...
    James黄杰阅读 7,743评论 0 30
  • 姓名:华林 公司:宁波大发化纤有限公司 【日精进打卡第6天】 【知~学习】 《六项精进》0遍 《大学》0遍 【经典...
    hualincool阅读 1,162评论 0 0

友情链接更多精彩内容