Sql注入的防御措施

admin 2025年1月2日23:38:44评论5 views字数 1630阅读5分26秒阅读模式
  • 前言

    这段时间,因为找室友、找工作的事情,心烦了好久,整租下来的三室,和一个朋友来租的,我不禁想说,我有离沪的想法,可是朋友是信任我才来的,我不能辜负了我的朋友,或许要是真找不到室友就只能说是提前和朋友沟通一下了。在上海找工作其实并不难,难的是你的通勤时间、工作内容、工资等等,和几个朋友诉说后,感觉挖漏洞赚钱确实不错,也不会受到领导的pua什么的,但真不是长久之计……

    最主要的还是因为这段时间,各大SRC都在搞中秋活动,混迹各种礼盒套装 : )  感谢枫落师傅这几天的陪伴

    从拾记录学习生活,今天主要是看到了一篇关于Java上对Sql注入的防御措施讲起,但众所周知,Sql注入一般的防御措施就是过滤转义、限制数据类型、预编译等等,今天主要是分享一下Java中的预编译。

  • PreparedStatement SQL预编译查询

// 获取用户传入的用户IDString id = request.getParameter("id");// 定义最终执行的SQL语句,这里会将用户从请求中传入的host字符串拼接到最终的SQL// 语句当中,从而导致了SQL注入漏洞。String sql = "select id, username, email from sys_user where id =? ";// 创建预编译对象PreparedStatement pstt = connection.prepareStatement(sql);// 设置预编译查询的第一个参数值pstt.setObject(1, id);// 执行SQL语句并获取返回结果对象ResultSet rs = pstt.executeQuery();

    需要特别注意的是并不是使用PreparedStatement来执行SQL语句就没有注入漏洞,而是将用户传入部分使用?(问号)占位符表示并使用PreparedStatement预编译SQL语句才能够防止注入!

  • JDBC预编译

    JDBC预编译查询分为客户端预编译和服务器端预编译,对应的URL配置项是useServerPrepStmts,当useServerPrepStmts为false时使用客户端(驱动包内完成SQL转义)预编译,useServerPrepStmts为true时使用数据库服务器端预编译。其实也是采用的是prepareStatement预编译,在于区别是要想采用客户端还是服务端的区别。以下内容作为了解就好了

主要看参数useServerPrepStmts客户端预编译:jdbc:mysql://localhost:3306/mysql?autoReconnect=true&zeroDateTimeBehavior=round&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&useOldAliasMetadataBehavior=true&useSSL=false&useServerPrepStmts=false服务端预编译:jdbc:mysql://localhost:3306/mysql?autoReconnect=true&zeroDateTimeBehavior=round&useUnicode=true&characterEncoding=UTF-8&useOldAliasMetadataBehavior=true&useOldAliasMetadataBehavior=true&useSSL=false&useServerPrepStmts=true

最终结果没什么不同~

  • 总结

    下次面试再遇到的话,就不用单单的说Sql注入防御措施只有过滤转义、限制数据类型、预编译啦,是如何做到预编译的就可以展开讲讲了,希望给大家能够带来一些帮助,Good Luck!

原文始发于微信公众号(Undoubted Security):Sql注入的防御措施

免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2025年1月2日23:38:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Sql注入的防御措施https://cn-sec.com/archives/1834241.html
                  免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉.

发表评论

匿名网友 填写信息