xss系列:

springmvc防xss脚本注入攻击,springmvc过滤html和js标签,html和js标签转义
前端防xss脚本攻击,js过滤xss脚本,nodejs过滤xss脚本

springmvc防xss脚本注入攻击,springmvc过滤html和js标签,html和js标签转义

  • 一、前言
  • 二、原理
  • 三、springmvc如何实现xss过滤
    • 3.1、xss转义包装器
    • 3.2 xss过滤器
    • 3.3 web.xml配置过滤器

一、前言

xss脚本注入攻击大家应该经常见了,不多说了,直接讲防xss脚本注入的原理吧。

二、原理

原理很简单,http后端通过过滤器过滤request接受的参数内容,把包含"<"、">","&"、"/“和“””的字符进行转义即可。
例如:

  1. 普通注入脚本
<script>alert("xss脚本攻击");</script>
  1. 通过标签事件监听注入脚本
<a onload="javascript:alert('通过标签事件监听注入脚本')">自动加载</a>

不论是哪种方式,它们都有个共同点,那就是需要html/js作为载体,那事情就简单了,只要破坏这个结构就好了,如何破坏呢,将包含"<"、">",","&"、"/“和“””的字符转义,如果把这些字符转义了,例如把上面的转义成下面的这样:

  1. 转义后的普通注入脚本
&lt;script&gt;alert(&quot;xss脚本攻击&quot;);&lt;/script&gt;
  1. 转义后的标签事件监听注入脚本
&lt;a onload=&quot;javascript:alert('通过标签事件监听注入脚本')&quot;&gt;自动加载&lt;/a&gt;

注入的脚本就再也无法运行了,而且还不影响前端显示,前端依然显示的是

<script>alert("xss脚本攻击");</script>

但是却无法执行任何脚本了。

补充:html/js特殊字符转义可以参考博主另一篇文章:HTML转义字符对照表

三、springmvc如何实现xss过滤

3.1、xss转义包装器

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
import org.springframework.web.util.HtmlUtils;/*** 过滤xss脚本注入的请求包装器* @author eguid*/
public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {public XssHttpServletRequestWrapper(HttpServletRequest servletRequest) {super(servletRequest);}public String[] getParameterValues(String parameter) {String[] values = super.getParameterValues(parameter);if (values == null)return null;int count = values.length;String[] encodedValues = new String[count];for (int i = 0; i < count; i++) {encodedValues[i] = HtmlUtils.htmlEscape(values[i]);}return encodedValues;}public String getParameter(String parameter) {String value = super.getParameter(parameter);if (value == null)return null;return HtmlUtils.htmlEscape(value);}public String getHeader(String name) {String value = super.getHeader(name);if (value == null)return null;return HtmlUtils.htmlEscape(value);}
}

3.2 xss过滤器

import java.io.IOException;
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;/*** 防xss脚本注入攻击过滤器,使用了springmvc自带的HtmlUtils进行过滤html标签转义(对"<"、">"、"("、")"转义使脚本无效)* @author eguid*/
public class XssFilter implements Filter {FilterConfig filterConfig = null;public void init(FilterConfig filterConfig) throws ServletException {this.filterConfig = filterConfig;}public void destroy() {this.filterConfig = null;}// 对request进行包装public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {chain.doFilter(new XssHttpServletRequestWrapper((HttpServletRequest) request), response);}}

3.3 web.xml配置过滤器

<!-- xss过滤器 --><filter><filter-name>xssFilter</filter-name><!--替换成自己实现的过滤器类路径--><filter-class>cc.eguid.web.filter.XssFilter</filter-class></filter><filter-mapping><filter-name>xssFilter</filter-name><url-pattern>/*</url-pattern></filter-mapping>

如果觉得写得还不错,欢迎”一键三连“支持一波

springmvc防xss脚本注入攻击,springmvc过滤html和js标签,html和js标签转义相关推荐

  1. PHP 防XSS跨站攻击

    //防止跨站攻击static public function removeXss($val){ $val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\ ...

  2. 利用Kangle的HTTP-only,Cookie防XSS跨站攻击

    在kangle中我们可以通过访问控制,对cookie增加这一属性,而不用修改程序,非常方便. 进入kangle(2.9.6以上版本)的管理后台(http://localhost:3311/),点左边的 ...

  3. 08蚂蚁-互联网安全架构——1.XSS攻击,SQL注入攻击,Http请求防盗链,CSRF请求攻击,忘记密码暴力破解,上传文件漏洞

    常见Web安全漏洞 XSS攻击 什么是XSS攻击手段 XSS攻击使用Javascript脚本注入进行攻击 例如在提交表单后,展示到另一个页面,可能会受到XSS脚本注入,读取本地cookie远程发送给黑 ...

  4. PHP用户输入安全过滤和注入攻击检测

    摘抄自ThinkPHP /*** 获取变量 支持过滤和默认值* @param array $data 数据源* @param string|false $name 字段名* @param mixed ...

  5. 渗透测试之XSS(跨站脚本攻击)

    文章目录 XSS 漏洞概述 XSS 分类 XSS 危害 XSS 漏洞的验证 XSS 的构造 XSS 的变形(绕过方式) Shellcode 的调用 远程调用JS windows.location.ha ...

  6. 注入攻击-SQL注入和代码注入

    注入攻击 OWASP将注入攻击和跨站脚本攻击(XSS)列入网络应用程序十大常见安全风险.实际上,它们会一起出现,因为 XSS 攻击依赖于注入攻击的成功.虽然这是最明显的组合关系,但是注入攻击带来的不仅 ...

  7. java 过滤脚本_【快学SpringBoot】过滤XSS脚本攻击(包括json格式)

    XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安 ...

  8. PHP防SQL注入代码,PHP 预防CSRF、XSS、SQL注入攻击

    1.服务端进行CSRF防御 服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数. (1).Cookie Hashing(所有表单都包含同一个伪随机值): 这可能是最简单 ...

  9. [风一样的创作]防XSS注入攻击

    一.首先大概理解下什么是XSS注入攻击 XSS注入攻击本质上就是通过你服务本身的接口把一些HTML,CSS,JS,SQL语句等内容存储进你的服务里面,一般是数据库里面,这时候就可以通过这些存储进去的内 ...

  10. tp5防止sql注入mysql_TP5框架 《防sql注入、防xss攻击》

    版权声明:本文为博主原创文章,转载请注明原文出处! https://blog.csdn.net/qq_23375733/article/details/86606630 如题:tp5怎么防sql注入 ...

最新文章

  1. cli能记日志web不能php,异步日志输出方案
  2. observeOn()与subscribeOn()的详解
  3. INSERT IGNORE 与INSERT INTO的区别
  4. c ++一行给多个变量赋值_C语言变量
  5. DotNetNuke的升级路径
  6. {php mysql}
  7. 我们如何体验 Line 的生活方式
  8. HttpClient4.5使用RequestConfig配置连接信息
  9. SIP协议栈读书笔记1
  10. scriptalert(1)/script
  11. js将long日期格式转换为标准日期格式
  12. linux删除系统日志文件,Linux不小心删除日志文件syslog的解决方法
  13. c++把字符串逆序输出
  14. Linux下查看日志常用命令
  15. java日期计算天数_Java 两个日期间的天数计算
  16. unity3d显示c4d材质_C4D入门到精通,没那么难
  17. 周末闲暇用javascript写个网页“斗兽棋”小游戏
  18. 蓝桥:8皇后·改(⼋皇后问题)
  19. Java毕业设计_代驾到家服务app的设计与实现
  20. 风口下的远程办公:钉钉微信死磕,百度趁势入场

热门文章

  1. The JSP specification requires that an attribute name is preceded by whitespace出现错误
  2. 红帽操作系统 RHEL 8.1 官方ISO镜像下载
  3. D - Power Tower欧拉降幂公式
  4. Jaca程序基础学习笔记
  5. 金融类openapi
  6. 戴文渊 李一男 李三琦
  7. php数组匹配某一个元素的值
  8. REMIX智能合约实例BALLOT分析
  9. 第35讲:Xposed+模拟器的详细使用
  10. (JZ1162)2018.07.07【2018提高组】模拟B组 1.【NOI2002】贪吃的九头龙