什么是SQL注入进犯?引证百度百科的解说:
sql注入_百度百科:
所谓SQL注入,便是通过把SQL指令刺进到Web表单提交或输入域名或页面恳求的查询字符串,终究抵达诈骗服务器履行歹意的SQL指令。详细来说,它是使用现有应用程序,将(歹意)的SQL指令注入到后台数据库引擎履行的才能,它能够通过在Web表单中输入(歹意)SQL句子得到一个存在安全漏洞的网站上的数据库,而不是依照设计者目的去履行SQL句子。[1] 比方从前的许多影视网站走漏VIP会员暗码大多便是通过WEB表单递送查询字符暴出的,这类表单特别简单遭到SQL注入式进犯.
SQL注入进犯指的是通过构建特别的输入作为参数传入Web应用程序,而这些输入大都是SQL语法里的一些组合,通过履行SQL句子从而履行进犯者所要的操作,其主要原因是程序没有详尽地过滤用户输入的数据,致使不合法数据侵入体系。
filter功用:
它使用户能够改动一个 request和修正一个response. Filter 不是一个servlet,它不能发生一个response,它能够
在一个request抵达servlet之前预处理request,也能够在脱离 servlet时处理response.
换种说法,filter其实是一个”servlet chaining”(servlet 链). 所以用户宣布的任何request都必定通过filter处理,咱们就在filter处理用户request包括的灵敏关键字,然后replace掉或是让页面转到过错页来提示用户,这样就能够很好的防sql注入了。
详细完成代码:
/YourProject/src/com/SqlFilter.java
仿制代码
1 package com;
2 import java.io.IOException;
3 import java.util.Enumeration;
4 import javax.servlet.Filter;
5 import javax.servlet.FilterChain;
6 import javax.servlet.FilterConfig;
7 import javax.servlet.ServletException;
8 import javax.servlet.ServletRequest;
9 import javax.servlet.ServletResponse;
10 import javax.servlet.http.HttpServletRequest;
11 import javax.servlet.http.HttpServletResponse;
12
13 //过滤sql关键字的Filter
14 public class SqlFilter implements Filter {
15
16 public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
17
18 HttpServletRequest req = (HttpServletRequest) request;
19 HttpServletResponse res = (HttpServletResponse) response;
20 //取得一切恳求参数名
21 Enumeration params = req.getParameterNames();
22
23 String sql = "";
24 while (params.hasMoreElements()) {
25 //得到参数名
26 String name = params.nextElement().toString();
27 //System.out.println("name===========================" + name + "--");
28 //得到参数对应值
29 String[] value = req.getParameterValues(name);
30 for (int i = 0; i < value.length; i++) {
31 sql = sql + value[i];
32 }
33 }
34 System.out.println("被匹配字符串:"+sql);
35 if (sqlValidate(sql)) {
36 res.sendRedirect("error.jsp");
37 } else {
38 chain.doFilter(req, res);
39 }
40 }
41
42 //校验
43 protected static boolean sqlValidate(String str) {
44 str = str.toLowerCase();//一致转为小写
[1] [2] 黑客接单网