代码漏洞
这里是我在工作中遇到过的一些存在而且不会注意的编码漏洞, 会造成系统的不安全性, 这里将会从漏洞风险由高到低一一介绍总结以下
1. SQL 注入漏洞 (高等风险)
-
风险分析
- SQL 注入式一种数据库攻击手段, 攻击者通过向应用程序提交恶意代码来改变原来 SQL 语句的含义, 进而执行任意 SQL 命令, 达到入侵数据库乃至操作系统的目的
-
安全建议
- 在入口文件处添加 SQL 过滤器, 直接拦截过滤特殊字符
-
处理方式
- 增加全局过滤器
- 在 配置文件 web.xml 中注册
import java.io.IOException; import java.util.Enumeration; 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.Filter; import javax.servlet.http.HttpServlet; /** * @Author: 九千七 * @date: 2021/2/3 17:12 * @description: 增加 SQL 注入过滤器, 过滤所有请求 */ /* * 通过过滤器过滤SQL注入特殊字符 */ @SuppressWarnings({ "rawtypes", "JavaDoc"}) public class InjectFilter extends HttpServlet implements Filter { private static final String failPage = "ErrorHandle.jsp"; //发生注入时,跳转页面, 此处为你自己项目中定义的错误界面 public void doFilter(ServletRequest request,ServletResponse response, FilterChain filterchain)throws IOException, ServletException { //判断是否有注入攻击字符 HttpServletRequest req = (HttpServletRequest) request; String inj = injectInput(req); if (!inj.equals("")) { request.getRequestDispatcher(failPage).forward(request, response); } else { // 传递控制到下一个过滤器 filterchain.doFilter(request, response); } } /** * 判断request中是否含有注入攻击字符 * @param request * @return inj */