php xss过滤器,Xss过滤器如何配置?Xss过滤器配置方法

本篇文章给大家带来的内容是关于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事件的标签。例如 “οnclick=”, “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;

}

}

以上就是Xss过滤器如何配置?Xss过滤器配置方法的详细内容,更多请关注php中文网其它相关文章!

article_wechat2021.jpg?1111

声明:本文原创发布php中文网,转载请注明出处,感谢您的尊重!如有疑问,请联系admin@php.cn处理

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值