为了解决由于编码问题而导致的找不到模板文件以及解决安全扫描中XSS注入风险问题,皕杰报表web端新增了两个过滤器供选择,一个是字符编码过滤器(CharacterEncodingFilter),一个是XSS过滤器(XssRequestFilter)。
一、 字符编码过滤器(CharacterEncodingFilter)
实质上这是一个编码转换过滤器,把URL中的编码统一成UTF-8,从而解决了由于编码问题而导致的找不到模板文件、页面乱码等问题。如果要使用该过滤器,需在web.xml中进行如下配置:
<filter>
<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>bios.report.engine.output.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encode</param-name>
<param-value>UTF-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/ReportEmitter</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/ReportQuerier</url-pattern>
</filter-mapping>
… …
有两点需要注意:
1、该过滤器仅仅针对GET请求有效
2、如果使用皕杰框架平台的话,请把该过滤器配置在平台的主过滤器之后
二、XSS过滤器(XssRequestFilter)
为了解决安全扫描中XSS注入风险问题,增加了一个XSS过滤器(XssRequestFilter),可以有效解决XSS注入的安全问题。如果要使用该过滤器,需在web.xml中进行如下配置:
<filter>
<filter-name>XSSRequestFilter</filter-name>
<filter-class>bios.report.engine.output.XSSRequestFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>XSSRequestFilter</filter-name>
<url-pattern>/ReportEmitter</url-pattern>
</filter-mapping>
<filter-mapping>
<filter-name>XSSRequestFilter</filter-name>
<url-pattern>/ReportQuerier</url-pattern>
</filter-mapping>
… …
XSS规则配置
为了能灵活控制不断变化的XSS注入,XssRequestFilter把过滤规则放置在resources/xssruler_config.xml中,这样可以根据需要进行过滤规则控制。
一个参数只能配置一条规则,参数名区分大小写;一个规则中可以配置很多的注入特征字符,不同的特征字符之间用逗号隔开,特征字符不区分大小写,按照配置的顺序执行处理;
如下所示:
一个参数只能配置一条规则,参数名区分大小写;一个规则中可以配置很多的攻击特征字符,不同的特征字符之间用逗号隔开,特征字符不区分大小写,按照配置的顺序执行处理;
如下所示:
<Config>
<parameter name="rpt" xss="script,alert" />
<parameter name="rptskin" xss="script,alert" />
</Config>
其它说明
1、遇到参数值中有xss脚本时,并不中断请求,而是把参数值中的与xss特性相关内容去掉。
2、XSS特性字符中如果有特殊字符,例如:‘<’用‘ <’代替;‘>’用‘ >’代替。
3、如果使用皕杰框架平台的话,请把该过滤器配置在平台的主过滤器之后。
网友评论