45-互联网安全架构-Web常用攻击手段之XSS脚本&SQL注入攻击

1. 什么是XSS攻击&XSS攻击应用场景
  1. XSS其实就是使用javascript脚本语言注入进行攻击
  2. XSS攻击场景:
    具体例子A请求提交表单信息,表单信息转发到另一个页面进行展示。
    有一些钓鱼网站,在提交参数的后面带上XSS脚本攻击 举例
    http://pay.itmayiedu.com/pay?userId=10&money=500&userName=
2. XSS脚本攻击原理分析
  1. XSS攻击原理:使用js脚本语言,因为浏览器默认支持脚本语言执行,如果在表单提交的时候,提交一些脚本参数,可能浏览器直接进行执行。
  2. XSS攻击最大常见漏洞(论坛、评论)
  3. 防御手段
    像一些特殊字符,比如<, > 如果不进行特殊字符处理的话,就很可能受到XSS攻击
    用户如果提交< 转换成<
3. 使用过滤器防御XSS攻击
@WebFilter(filterName = "xssFilter", urlPatterns = "/*")
public class XSSFilter implements Filter {
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException{
        //程序防止XSS攻击原理
        //1. 使用过滤器拦截所有参数
        HttpServletRequest servletRequest = (HttpServletRequest) request;
        //2. 重写getParameter方法
        XssHttpServletRequestWrapper xssHttpServletRequestWrapper = new XssHttpServletRequestWrapper(servletRequest);
        chain.doFilter(xssHttpServletRequestWrapper, response);
    }

    @Override
    public void destroy() {

    }
}

public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {

    private HttpServletRequest request;

    public XssHttpServletRequestWrapper(HttpServletRequest request) {
        super(request);
        this.request = request;
    }

    @Override
    public String getParameter(String name) {
        // 过滤getParameter参数 检查是否有特殊字符
        String oldValue = super.getParameter(name);
        System.out.println("【转换前】" + oldValue);
        if (!StringUtils.isEmpty(oldValue)) {
            oldValue = StringEscapeUtils.escapeHtml4(oldValue);
        }
        System.out.println("【转换后】" + oldValue);
        return oldValue;
    }
}

SpringBoot启动加上@ServletComponentScan
4. 使用#传递参数防御SQL注入攻击

#{}: 解析为一个 JDBC 预编译语句(prepared statement)的参数标记符,一个 #{ } 被解析为一个参数占位符,可以防止SQL注入问题。
${}: 仅仅为一个纯碎的 string 替换,在动态 SQL 解析阶段将会进行变量替换。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值