手机做点击赚钱的网站,seosem推广,如果做网站运营,wordpress数据库链接地址目录 【项目问题解决】% sql注入问题 1.问题描述2.问题原因3.解决思路4.解决方案1.前端限制传入特殊字符2.后端拦截特殊字符-正则表达式3.后端拦截特殊字符-拦截器 5.总结6.参考 文章所属专区 项目问题解决 1.问题描述
在处理接口入参的一些sql注入问题#xff0c;虽然通过M…
目录 【项目问题解决】% sql注入问题 1.问题描述2.问题原因3.解决思路4.解决方案1.前端限制传入特殊字符2.后端拦截特殊字符-正则表达式3.后端拦截特殊字符-拦截器 5.总结6.参考 文章所属专区 项目问题解决 1.问题描述
在处理接口入参的一些sql注入问题虽然通过MyBatis框架的一些特点处理了大部分sql注入问题但还有一些是没法处理比如这种 param LIKE CONCAT(CONCAT(‘%’,‘%’),‘%’) 这种情况%无法预编译或者转义成%导致去数据库查询了全表。
2.问题原因
MyBatis转义失败 前端没有现值特殊字符 后端没有过滤特殊字符
3.解决思路
1.前端限制禁止传入特殊字符
2.后端限制禁止传入特殊字符例如swagger限制字符传入但似乎只在POST请求有效
3.后端拦截特殊字符
4.解决方案
1.前端限制传入特殊字符
2.后端拦截特殊字符-正则表达式 public static void main(String[] args) {String text Hello%World;boolean hasSpecialChar text.matches(.*[%].*);if (hasSpecialChar) {System.out.println(字符串中包含特殊字符%);} else {System.out.println(字符串中不包含特殊字符%);}}.*表示匹配0个或多个字符 [%]表示匹配字符 %
3.后端拦截特殊字符-拦截器
import javax.servlet.*;
import javax.servlet.annotation.WebFilter;
import java.io.IOException;WebFilter(/*)
public class SpecialCharacterFilter implements Filter {Overridepublic void init(FilterConfig filterConfig) throws ServletException {// 初始化操作}Overridepublic void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {// 获取请求参数String parameter servletRequest.getParameter(param);// 检查参数中是否带有特殊字符 %if (parameter ! null parameter.contains(%)) {// 拦截请求servletResponse.getWriter().write(请求参数中含有特殊字符 %);return;}// 继续处理请求filterChain.doFilter(servletRequest, servletResponse);}Overridepublic void destroy() {// 销毁操作}
}5.总结
6.参考
给个三连吧 谢谢谢谢谢谢了