Xss过滤器如何配置?Xss过滤器配置方法

发布时间 - 2019-01-22 00:00:00    点击率:

本篇文章给大家带来的内容是关于xss过滤器如何配置?xss过滤器配置方法,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

1.XSS是什么?

跨站脚本(cross site script)简称为XSS,是一种经常出现在web应用中的计算机安全漏洞,也是web中最主流的攻击方式。

XSS是指恶意攻击者利用网站没有对用户提交数据进行转义处理或者过滤不足的缺点,进而添加一些代码,嵌入到web页面中去,使别的用户访问都会执行相应的嵌入代码。

2.XSS攻击的危害

1、盗取用户资料,比如:登录帐号、网银帐号等

2、利用用户身份,读取、篡改、添加、删除企业敏感数据等

3、盗窃企业重要的具有商业价值的资料

4、非法转账

5、强制发送电子邮件

6、网站挂马

7、控制受害者机器向其它网站发起攻击

3.防止XSS解决方案

XSS的根源主要是没完全过滤客户端提交的数据 ,所以重点是要过滤用户提交的信息。

 将重要的cookie标记为http only, 这样的话js 中的document.cookie语句就不能获取到cookie了.

 只允许用户输入我们期望的数据。 例如:age用户年龄只允许用户输入数字,而数字之外的字符都过滤掉。

 对数据进行Html Encode 处理: 用户将数据提交上来的时候进行HTML编码,将相应的符号转换为实体名称再进行下一步的处理。

 过滤或移除特殊的Html标签, 例如:

 过滤js事件的标签。例如 “onclick=”, “onfocus” 等等。

项目以SpringBoot项目为例:

XssFilter:

import javax.servlet.*;
import javax.servlet.http.HttpServletRequest;
import java.io.IOException;
import java.util.List;
@Compent
public class XssFilter implements Filter {
FilterConfig filterConfig = null;
private List urlExclusion = null;
public void init(FilterConfig filterConfig) throws ServletException {
this.filterConfig = filterConfig;
}
public void destroy() {
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException {
HttpServletRequest httpServletRequest = (HttpServletRequest) request;
String servletPath = httpServletRequest.getServletPath();
if (urlExclusion != null && urlExclusion.contains(servletPath)) {
chain.doFilter(request, response);
} else {
chain.doFilter(new XssHttpServletRequestWrapper((HttpServletRequest) request), response);
}
}
public List getUrlExclusion() {
return urlExclusion;
}
public void setUrlExclusion(List urlExclusion) {
this.urlExclusion = urlExclusion;
}
}

XssHttpServletRequestWrapper:

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
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] = cleanXSS(values[i]);
}
return encodedValues;
}
public String getParameter(String parameter) {
String value = super.getParameter(parameter);
if (value == null) {
return null;
}
return cleanXSS(value);
}
public String getHeader(String name) {
String value = super.getHeader(name);
if (value == null)
return null;
return cleanXSS(value);
}
private String cleanXSS(String value) {
//You'll need to remove the spaces from the html entities below
value = value.replaceAll("<", "& lt;")。replaceAll(">", "& gt;");
value = value.replaceAll("\\(", "& #40;")。replaceAll("\\)", "& #41;");
value = value.replaceAll("'", "& #39;");
value = value.replaceAll("eval\\((。*)\\)", "");
value = value.replaceAll("[\\\"\\\'][\\s]*javascript:(。*)[\\\"\\\']", "\"\"");
value = value.replaceAll("script", "");
return value;
}
}


# html  # xss  # for  # Cookie  # JS  # 事件  # http  # 帐号  # 只允许  # 是一种  # 出现在  # 是指  # 对你  # 有一定  # 给大家  # 就不能  # 为例 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何登录建站主机?访问步骤全解析  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  google浏览器怎么清理缓存_谷歌浏览器清除缓存加速详细步骤  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  高性价比服务器租赁——企业级配置与24小时运维服务  如何在橙子建站中快速调整背景颜色?  php8.4header发送头信息失败怎么办_php8.4header函数问题解决【解答】  如何快速选择适合个人网站的云服务器配置?  Python结构化数据采集_字段抽取解析【教程】  Bootstrap CSS布局之列表  如何用西部建站助手快速创建专业网站?  Laravel如何使用查询构建器?(Query Builder高级用法)  Laravel如何实现API版本控制_Laravel版本化API设计方案  制作ppt免费网站有哪些,有哪些比较好的ppt模板下载网站?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  宙斯浏览器文件分类查看教程 快速筛选视频文档与图片方法  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  如何用美橙互联一键搭建多站合一网站?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  Laravel怎么在Blade中安全地输出原始HTML内容  laravel怎么使用数据库工厂(Factory)生成带有关联模型的数据_laravel Factory生成关联数据方法  详解CentOS6.5 安装 MySQL5.1.71的方法  简历在线制作网站免费版,如何创建个人简历?  大连网站制作公司哪家好一点,大连买房网站哪个好?  Python正则表达式进阶教程_复杂匹配与分组替换解析  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  Laravel如何使用Passport实现OAuth2?(完整配置步骤)  C++时间戳转换成日期时间的步骤和示例代码  Laravel如何使用Guzzle调用外部接口_Laravel发起HTTP请求与JSON数据解析【详解】  学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?  Laravel如何使用Service Provider服务提供者_Laravel依赖注入与容器绑定【深度】  微信小程序 HTTPS报错整理常见问题及解决方案  EditPlus 正则表达式 实战(3)  googleplay官方入口在哪里_Google Play官方商店快速入口指南  大连 网站制作,大连天途有线官网?  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Laravel怎么连接多个数据库_Laravel多数据库连接配置  php静态变量怎么调试_php静态变量作用域调试技巧【解答】  Laravel怎么配置S3云存储驱动_Laravel集成阿里云OSS或AWS S3存储桶【教程】  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  网站制作大概要多少钱一个,做一个平台网站大概多少钱?  微信小程序制作网站有哪些,微信小程序需要做网站吗?  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  郑州企业网站制作公司,郑州招聘网站有哪些?  Laravel如何生成API文档?(Swagger/OpenAPI教程)  如何快速搭建虚拟主机网站?新手必看指南  Laravel如何获取当前用户信息_Laravel Auth门面获取用户ID  Laravel如何实现邮件验证激活账户_Laravel内置MustVerifyEmail接口配置【步骤】  专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?