java防sql注入详解
来源:互联网 发布:两小无猜网络剧小说 编辑:程序博客网 时间:2024/06/01 08:36
我们知道,我们的程序如果扩展性不好,很可能被sql注入,我们可以通过集中方法在避免。
1.永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;对单引号和
双"-"进行转换等。
2.永远不要使用动态拼装sql,可以使用参数化的sql或者直接使用存储过程进行数据查询存取。
3.永远不要使用管理员权限的数据库连接,为每个应用使用单独的权限有限的数据库连接。
4.不要把机密信息直接存放,加密或者hash掉密码和敏感的信息。
5.应用的异常信息应该给出尽可能少的提示,最好使用自定义的错误信息对原始错误信息进行包装
6.sql注入的检测方法一般采取辅助软件或网站平台来检测,软件一般采用sql注入检测工具jsky,网站平台就有亿思网站安全平台检测工具。
2:我们在java中设置变量值的时候,使用?来代替变量,而不是采用如 inserti into test values(test,'1',''2')这种的。
3:我们可以通过过滤器来操作,我们看下面的web.xml加入的代码:
<filter>
<filter-name>preventIntoScriptFilter</filter-name>
<filter-class>com.questionnaire.common.filter.PreventIntoScriptFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>preventIntoScriptFilter</filter-name>
<url-pattern>*.view</url-pattern>
</filter-mapping>
转载自:http://www.csdnjava.com/forum.php?mod=viewthread&tid=603
然后我们通过一个filter来实现:
java代码如下:
package com.questionnaire.common.filter;
import java.io.IOException;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
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;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class PreventIntoScriptFilter implements Filter {
private static Log log = LogFactory.getLog(PreventIntoScriptFilter.class);
@Override
public void destroy() {
}
@SuppressWarnings("deprecation")
@Override
public void doFilter(ServletRequest servletRequest,
ServletResponse servletResponse, FilterChain chain)
throws IOException, ServletException {
HttpServletRequest request = (HttpServletRequest) servletRequest;
HttpServletResponse response = (HttpServletResponse) servletResponse;
try {
String s = request.getQueryString();
if (s != null) {
// System.out.println("+++++++++++++++++++++++" + s);
Pattern pattern = Pattern
.compile("(?i)[|;$@'\"<>()+,\\\\#]|%7C|%3B|%24|%40|%27|%22|%3C|%3E|%28|%29|%2B|%2C|%5C|%23");
Matcher matcher = pattern.matcher(s);
if (matcher.find()) {
String s3 = s
.replaceAll(
"(?i)[|;$@'\"<>()+,\\\\#]|%7C|%3B|%24|%40|%27|%22|%3C|%3E|%28|%29|%2B|%2C|%5C|%23",
"");
// System.out.println("+++++++++++++++++++++++" + s3);
response.sendRedirect(request.getRequestURL() + "?" + s3);
}
}
} catch (Exception e) {
log.error("PreventIntoScriptFilter 出错了:" + e);
}
chain.doFilter(request, response);
}
@Override
public void init(FilterConfig filterConfig) throws ServletException {
}
}
这样我们就可以避免了
- java防sql注入详解
- java 防sql注入
- JAVA防sql注入
- Java如何防sql注入
- java 防SQL注入正则
- Java 防SQL注入方法
- java(or jsp)防sql注入
- 通用防SQL注入函数java版
- java(or jsp)防sql注入
- java(or jsp)防sql注入
- java 过滤器filter防sql注入
- java 过滤器filter防sql注入
- java 过滤器filter防sql注入
- java防sql注入方法小结
- 防sql注入&文本框防sql注入
- 防SQL注入
- SQL防注入简介
- SQL防注入简介
- Linux下第一个驱动程序
- 常用语句收集
- 心勃勃的NoSQL新贵 MongoDB应用实战
- 路由表
- CRM流程的做法
- java防sql注入详解
- 自己写的php上传类,完全独立的 亲测好用
- tar分卷压缩
- 服务器间大文件传输
- Android 开发要是的重点
- 高效的大文件拷贝
- rvm 安装
- 关于operation point的理解
- Spring 的 HibernateDaoSupport 类的 getSession() 导致的连接泄露问题