首页 > 作文

Java如何有效避免SQL注入漏洞的方法总结

更新时间:2023-04-04 10:03:55 阅读: 评论:0

1、简单又有效的方法是使用preparedstatement

采用预编译语句集,它内置了处理sql注入的能力,只要使用它的txxx(如:tstring)方法传值即可。

好处:

(1).代码的可读性和可维护性变好。

(2).preparedstatement尽最大可能提高性能。

(3).最重要的一点是极大地提高了安全性。

原理:

sql注入只对sql语句的编译过程有破坏作用,而preparedstatement的sql语句编译阶段已经准备好了,执行阶段只是把输入串作为数据处理,而不北京私立学校再对sql语句进行解析、准备,因此也就避免了sql注入问题。

一些热门orm框架在处理sql时候也都使用了preparedstatement,比如mybatis。

我们在使用mybatis要注意:在注入参数值得时候使用#{xxx},#{xxx}已经启用了预编译功能,在sql执行前,会先将上面的sql发送给数据库进行编译;执行时,直接使用编译好的sql,替换占位符“?”就可以了。因为sql注入只能对编译过程起作用,所以秦朝后面是什么朝代这样的方式就很好地避免了sql注入的问题。

“${xxx}”这样格式的参数会直接参与sql编译,从而不能避免注入攻击。

有时有些操作要使用这种方式,比如传入表,模糊英语交流匹配等。这时可以使用bind+#{}防止sql注入(#{}进行预编译,传递的参数不进行编译,只作为参数,相当于preparedstatement)。

bind元素可以从ognl表达式中创建一个变量并将其绑定到上下文。比如:

<lect id="lectblog" resulttype="blog"><bind name="pattern" value="'%' + _parameter.gettitle() + '%'" />lect * from blog where title like #{pattern}</lect>

2、使用过滤器

如果我们做不到所有的sql语句都使用preparedstatement,我们可以使用过滤器,进行全局的拦截这些字符串。在过滤器中,使用正则表达式过滤传入的参数。使用正则表达式,判断是否匹配:

string begin="您的请求参数信息"; //可以通过配置文件,去配置这些特殊字符,以便随时添加一些关键字。string pattern="|and|exec|execute|inrt|lect|delete|update|count|drop|*|%|chr|mid|master|truncate|char|declare|sitename|net ur|xp_cmdshell|;|or|-|+|,|like"; pat中秋对联大全tern r = pattern.compile(pattern);matcher ismatch = r.matcher(begin);if(ismatch.find()){    //危险请求参数}

防止sql注入的一些建议

1. 代码层防止sql注入攻击的最佳方案就是sql预编译

public list<cour> orde城市功能有哪些rlist(string studentid){    string sql = "lect id,cour_id,student_id,status from cour where student_id = ?";    return jdbctemplate.query(sql,new object[]{studentid},new beanpropertyrowmapper(cour.class));}

这样我们传进来的参数 4 or 1 = 1就会被当作是一个student_id,所以就不会出现sql注入了。

2. 确认每种数据的类型,比如是数字,数据库则必须使用int类型来存储

3. 规定数据长度,能在一定程度上防止sql注入

4. 严格限制数据库权限,能最大程度减少sql注入的危害

5. 避免直接响应一些sql异常信息,sql发生异常后,自定义异常进行响应

6. 过滤参数中含有的一些数据库关键词

总结

到此这篇关于java如何避免sql注入漏洞的文章就介绍到这了,更多相关java避免sql注入漏洞内容请搜索www.887551.com以前的文章或继续浏览下面的相关文章希望大家以后多多支持www.887551.com!

本文发布于:2023-04-04 10:03:54,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/zuowen/10429e3978f092903e8daa577b46f07a.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

本文word下载地址:Java如何有效避免SQL注入漏洞的方法总结.doc

本文 PDF 下载地址:Java如何有效避免SQL注入漏洞的方法总结.pdf

下一篇:返回列表
标签:参数   语句   数据库   异常
相关文章
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图