当前位置:   article > 正文

java 跨站脚本filter 拦截不了表单_跨站脚本:反射式

java 跨站脚本:反射性 输入流

跨站脚本:反射式 (Cross-Site Scripting: Reflected)

65e447f8d7718170a5dc7655dd7e8a0d.png

一、规则中文名称

跨站脚本

二、规则英文名称

Cross-Site Scripting

三、规则子类中文名称

反射

四、规则子类英文名称

Reflected

五、规则概述:

攻击者往Web页面里插入恶意脚本代码,当用户浏览该页面时,嵌入其中的脚本代码会被执行,并将结果反馈给用户,从而达到攻击者的特殊目的。

六、规则详情

XSS通常在以下情况下发生:

1)数据从一个不可信赖的数据源进入Web应用程序;

2)未检验动态内容中的数据是否存在恶意代码,便将其传送给了Web用户。

反射型XSS是指客户端发送带有恶意代码的请求信息到服务器端,服务器端没有验证请求中的信息,又推到客户端,形成反射式跨站请求风险。

例1:test.jsp从HTTP请求中读取员工的id并显示,代码如下:

...

Employee ID:

如果用户提交的id的值为“”时,浏览器将会显示该用户的Cookie信息。

七、整改建议

1、输出转义防止跨站脚本攻击

使用对系统输出转义的方法来防止跨站脚本,建议使用成熟的第三方转义函数如ESAPI、开发框架自带的标签输出方式等。

使用ESAPI的示例代码如下:

如果漏洞发生在java文件或者JSP文件中,使用JAVA版ESAPI对不安全的数据进行处理即可。示例代码如下:

...

Employee ID:

使用标签输出方式,系统默认会自动对数据做 HTML 转换,示例代码如下:

2、使用白名单来过滤来自不可信的参数。

创建一份安全字符白名单,并配置全局xss过滤器拦截所有请求,允许白名单中的字符出现在 HTTP 内容中,并且只接受完全由这些经认可的字符组成的输入,同时还要根据实际应用不断更新白名单字符,确保有效性。例如,一份有效的白名单仅包含字母、数字、汉字,示例代码如下:

private static LinkedHashMap whitelMap = new LinkedHashMap();

// 构建只包含英文字母、数字、中文字符的白名单

static {

for (char c = 'a'; c <= 'z'; c++) {

whitelMap.put(c, c);

}

for (char c = 'A'; c <= 'Z'; c++) {

whitelMap.put(c, c);

}

for (char c = '0'; c <= '9'; c++) {

whitelMap.put(c, c);

}

// 中文字符

for (char c = '\u4E00'; c <= '\u9FA5'; c++) {

whitelMap.put(c, c);

}

}

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/150410
推荐阅读
相关标签
  

闽ICP备14008679号