springmvc防xss脚本注入攻击,springmvc过滤html和js标签,html和js标签转义
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接受的参数内容,把包含"<"、">","&"、"/“和“””的字符进行转义即可。
例如:
- 普通注入脚本
<script>alert("xss脚本攻击");</script>
- 通过标签事件监听注入脚本
<a onload="javascript:alert('通过标签事件监听注入脚本')">自动加载</a>
不论是哪种方式,它们都有个共同点,那就是需要html/js作为载体,那事情就简单了,只要破坏这个结构就好了,如何破坏呢,将包含"<"、">",","&"、"/“和“””的字符转义,如果把这些字符转义了,例如把上面的转义成下面的这样:
- 转义后的普通注入脚本
<script>alert("xss脚本攻击");</script>
- 转义后的标签事件监听注入脚本
<a onload="javascript:alert('通过标签事件监听注入脚本')">自动加载</a>
注入的脚本就再也无法运行了,而且还不影响前端显示,前端依然显示的是
<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标签转义相关推荐
- PHP 防XSS跨站攻击
//防止跨站攻击static public function removeXss($val){ $val = preg_replace('/([\x00-\x08][\x0b-\x0c][\x0e-\ ...
- 利用Kangle的HTTP-only,Cookie防XSS跨站攻击
在kangle中我们可以通过访问控制,对cookie增加这一属性,而不用修改程序,非常方便. 进入kangle(2.9.6以上版本)的管理后台(http://localhost:3311/),点左边的 ...
- 08蚂蚁-互联网安全架构——1.XSS攻击,SQL注入攻击,Http请求防盗链,CSRF请求攻击,忘记密码暴力破解,上传文件漏洞
常见Web安全漏洞 XSS攻击 什么是XSS攻击手段 XSS攻击使用Javascript脚本注入进行攻击 例如在提交表单后,展示到另一个页面,可能会受到XSS脚本注入,读取本地cookie远程发送给黑 ...
- PHP用户输入安全过滤和注入攻击检测
摘抄自ThinkPHP /*** 获取变量 支持过滤和默认值* @param array $data 数据源* @param string|false $name 字段名* @param mixed ...
- 渗透测试之XSS(跨站脚本攻击)
文章目录 XSS 漏洞概述 XSS 分类 XSS 危害 XSS 漏洞的验证 XSS 的构造 XSS 的变形(绕过方式) Shellcode 的调用 远程调用JS windows.location.ha ...
- 注入攻击-SQL注入和代码注入
注入攻击 OWASP将注入攻击和跨站脚本攻击(XSS)列入网络应用程序十大常见安全风险.实际上,它们会一起出现,因为 XSS 攻击依赖于注入攻击的成功.虽然这是最明显的组合关系,但是注入攻击带来的不仅 ...
- java 过滤脚本_【快学SpringBoot】过滤XSS脚本攻击(包括json格式)
XSS攻击是什么 XSS攻击全称跨站脚本攻击,是为不和层叠样式表(Cascading Style Sheets, CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS,XSS是一种在web应用中的计算机安 ...
- PHP防SQL注入代码,PHP 预防CSRF、XSS、SQL注入攻击
1.服务端进行CSRF防御 服务端的CSRF方式方法很多样,但总的思想都是一致的,就是在客户端页面增加伪随机数. (1).Cookie Hashing(所有表单都包含同一个伪随机值): 这可能是最简单 ...
- [风一样的创作]防XSS注入攻击
一.首先大概理解下什么是XSS注入攻击 XSS注入攻击本质上就是通过你服务本身的接口把一些HTML,CSS,JS,SQL语句等内容存储进你的服务里面,一般是数据库里面,这时候就可以通过这些存储进去的内 ...
- tp5防止sql注入mysql_TP5框架 《防sql注入、防xss攻击》
版权声明:本文为博主原创文章,转载请注明原文出处! https://blog.csdn.net/qq_23375733/article/details/86606630 如题:tp5怎么防sql注入 ...
最新文章
- cli能记日志web不能php,异步日志输出方案
- observeOn()与subscribeOn()的详解
- INSERT IGNORE 与INSERT INTO的区别
- c ++一行给多个变量赋值_C语言变量
- DotNetNuke的升级路径
- {php mysql}
- 我们如何体验 Line 的生活方式
- HttpClient4.5使用RequestConfig配置连接信息
- SIP协议栈读书笔记1
- scriptalert(1)/script
- js将long日期格式转换为标准日期格式
- linux删除系统日志文件,Linux不小心删除日志文件syslog的解决方法
- c++把字符串逆序输出
- Linux下查看日志常用命令
- java日期计算天数_Java 两个日期间的天数计算
- unity3d显示c4d材质_C4D入门到精通,没那么难
- 周末闲暇用javascript写个网页“斗兽棋”小游戏
- 蓝桥:8皇后·改(⼋皇后问题)
- Java毕业设计_代驾到家服务app的设计与实现
- 风口下的远程办公:钉钉微信死磕,百度趁势入场
热门文章
- The JSP specification requires that an attribute name is preceded by whitespace出现错误
- 红帽操作系统 RHEL 8.1 官方ISO镜像下载
- D - Power Tower欧拉降幂公式
- Jaca程序基础学习笔记
- 金融类openapi
- 戴文渊 李一男 李三琦
- php数组匹配某一个元素的值
- REMIX智能合约实例BALLOT分析
- 第35讲:Xposed+模拟器的详细使用
- (JZ1162)2018.07.07【2018提高组】模拟B组 1.【NOI2002】贪吃的九头龙