Java防止SQL注入的几个途径

Java 防止 SQL 注入的几个途径 Java 防止 SQL 注入是一个非常重要的安全问题。SQL 注入攻击是黑客最常用的攻击方式之一,它可以让攻击者访问或修改数据库中的敏感信息。因此,防止 SQL 注入是 Java 开发者必须注意的安全问题。 1.杜绝 SQL 拼接 最简单的办法是杜绝 SQL 拼接。SQL 注入攻击能得逞是因为在原有 SQL 语句中加入了新的逻辑。如果使用 PreparedStatement 来代替 Statement 来执行 SQL 语句,其后只是输入参数,SQL 注入攻击手段将无效。这是因为 PreparedStatement 不允许在不同的插入时间改变查询的逻辑结构,大部分的 SQL 注入已经挡住了。 2.使用 PreparedStatement PreparedStatement 是一种预编译的 SQL 语句,可以在执行时输入参数。使用 PreparedStatement 可以防止 SQL 注入攻击,因为攻击者不能 inject 恶意的 SQL 语句。 3.过滤用户的输入 在 WEB 层我们可以过滤用户的输入来防止 SQL 注入。例如,可以使用 Filter 来过滤全局的表单参数。下面是一个简单的示例代码: ```java import java.io.IOException; import java.util.Iterator; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; public class SQLFilter implements Filter { private String inj_str = "'|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|; |or|-|+|,"; protected FilterConfig filterConfig = null; public void init(FilterConfig config) throws ServletException { this.filterConfig = config; this.inj_str = filterConfig.getInitParameter("keywords"); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest)request; HttpServletResponse res = (HttpServletResponse)response; Iterator values = req.getParameterMap().values().iterator(); while(values.hasNext()){ String[] value = (String[])values.next(); for(int i = 0;i < value.length;i++){ if(sql_inj(value[i])){ //TODO 这里发现 sql 注入代码的业务逻辑代码 return; } } } chain.doFilter(request, response); } public boolean sql_inj(String str) { String[] inj_stra=inj_str.split("\\|"); for (int i=0 ; i < inj_stra.length ; i++ ) { if (str.indexOf(" "+inj_stra[i]+" ")>=0) { return true; } } return false; } } ``` 这个示例代码使用 Filter 来过滤用户的输入,检查用户输入中是否包含恶意的 SQL 语句。如果发现恶意的 SQL 语句,将终止当前的请求。 防止 SQL 注入需要从多方面入手,包括杜绝 SQL 拼接、使用 PreparedStatement、过滤用户的输入等。只有通过这些措施,才能有效地防止 SQL 注入攻击。















- 粉丝: 261
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助


最新资源
- 大数据在电子商务企业的应用.doc
- 学习]网络游戏行业---五力分析模型-深圳大学.ppt
- 工程项目管理经典案例分析.doc
- 基于人工智能的雷达设备.docx
- 用友制药行业信息化策略专家讲座.pptx
- 个性网络用语自我介绍.pdf
- 网络营销调研.pptx
- 电气控制与PLC应用技术习题参考答案梅丽凤习题答案.doc
- 基于物联网的火灾监控系统设计样本.doc
- 基于单片机的楼宇智能智能照明控制系统.doc
- 新世纪科学技术发展与展望网络考试试题与答案.doc
- 网络维护工作总结.doc
- 健康素养55条培训MicrosoftPowerPoint演示文.pptx
- 恒智天成安全计算软件型钢悬挑卸料平台计算书.doc
- (精品)网络营销基础与实践期末考试---答案.doc
- 软件项目风险管理.ppt



- 1
- 2
前往页