首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

java filter 防止sql流入攻击

2012-07-29 
java filter 防止sql注入攻击原理,过滤所有请求中含有非法的字符,例如:, & select delete 等关键字,黑客

java filter 防止sql注入攻击

原理,过滤所有请求中含有非法的字符,例如:, & <  select delete 等关键字,黑客可以利用这些字符进行注入攻击,原理是后台实现使用拼接字符串,案例:


某个网站的登入验证的SQL查询代码为

      strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') and (pw = '"+ passWord +"');"

恶意填入

      userName = "' OR '1'='1";与passWord = "' OR '1'='1";时,将导致原本的SQL字符串被填为
        

      strSQL = "SELECT * FROM users WHERE (name = '' OR '1'='1') and (pw = '' OR '1'='1');"

也就是实际上运行的SQL命令会变成下面这样的

        strSQL = "SELECT * FROM users;"

因此达到无帐号密码,亦可登入网站。所以SQL注入攻击被俗称为黑客的填空游戏。


实现三个步骤:

1,编写filter

2,配置xml

3,配置error.jsp

filter代码;

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><%String path = request.getContextPath();%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>防sql注入系统</title>  </head>    <body>这个是防sql注入系统,自动过滤您的请求,请更换请求字符串。<%=session.getAttribute("sqlInjectError")%><p><a href="<%=path%>">点此返回</a></p>  </body></html>

大功告成

源代码可以到此直接下载:源代码demo

热点排行