关于怎么预防sql注入的方法

本文探讨了SQL注入的概念及其潜在风险,并介绍了两种有效防止SQL注入的方法:使用PreparedStatement预编译语句和利用Java的filter功能过滤恶意输入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

以前好像做的项目都没有太注重这一块,对于用户输入的一些信息也没去检查,现在想想还是很容易出问题的,还是写下来记录一下。


百度词条:所谓SQL注入,就是通过把SQL命令插入到Web表单提交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符暴出的,这类表单特别容易受到SQL注入式攻击。


浏览了大部分帖子,关于预防的方法主要分为两类:

一.采用JDBC的PreparedStatement预编译方式。

     这种方式是需要设置参数类型和参数的,如果说类型不一样是没办法执行通过的,或者有恶意sql如“;drop table users”这样的参数,是会被当成参数的,而不是执行语句去执行,所以这种方式是可以完全避免的。

     PreparedStatement不止能预防sql注入,而且效率也会比较高,也能支持编程式事务的回滚,但就我个人而言的话,感觉PreparedStatement代码比较多,一般在重要的操作中会用它,其它时候还是会用spring的JDBC操作直接操作。


二.采用java的filter功能:

      在服务器接收参数时就把用户提交的参数给过滤掉,如:param.replaceAll(".*([';]+|(--)+).*", " ");将特殊字符全部换掉置为空串。

      这个处理也可以是对sql语句的操作,如:sql.replaceAll(".*([';]+|(--)+).*", " ");

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值