站点安全配置:跨站点脚本攻击防范与解决方案
【漏洞背景说明】
跨站点脚本攻击(Cross Site Scripting简称XSS)是一种常见的攻击行为,它是指恶意攻击者在应用系统的Web页面里插入恶意代码,当用户浏览该页面时,嵌入其中Web里面的恶意代码会被执行,从而达到攻击的目的。
从原理上讲,跨站点脚本攻击,是利用系统对用户输入检查不严格的漏洞,将用户数据变成了可执行的代码。一个完整的XSS过程是这样的:
1,攻击者想办法在应用系统页面中嵌入了恶意脚本代码;
2,攻击者想办法让目标用户打开页面链接或浏览页面;
3,应用系统将含有恶意脚本的页面返回给用户浏览器;
4,浏览器解析运行恶意脚本。
【场景介绍】
为了防范此类安全漏洞问题,和帮助客户现场快速配置和通过第三方安全扫描工具认证。金蝶云星空在V7.X版本后,根据用户反馈的安全漏洞问题,陆续增加站点安全配置参数,不断加强星空产品访问安全。
安全参数生效产品版本:7.6.0.202105 / PT-146876及以上版本(构建号:7.6.2171.1)
本解决方案实现了对 http[s]://xxx.xxx.xxx.xxx/k3cloud/目录下URL+headers访问的WAF拦截
【解决方案】
请升级金蝶云星空环境到安全参数生效产品版本,并对安全参数进行配置,重启IIS后生效。
一. 主要步骤
配置URL请求头拦截规则,修改或添加相应需要的规则项;
增加并启用输入数据拦截规则参数;
添加输入数据文本黑名单拦截规则;
启用压缩参数,避免误拦截;
如果二开自定义请求参数存在类注入脚本格式数据或xml数据,请在传入前用base64进行编码,使用时再进行解码,避免木马注入。
二. 详细操作
1. 配置URL请求头拦截规则
配置节点:website/app_data/Common.config中的<packageConfig>节点下找到子节点<urlBlockRules>
默认配置项:
<urlBlockRules> <!-- 这里的所有value必须符合正向搜索正则表达式,表达式内容必须经过base64编码--> <!--\<(\s){0,}(\/){0,}(\s){0,}script\>--> <add key="Script_In_Bracket" value="XDwoXHMpezAsfShcLyl7MCx9KFxzKXswLH1zY3JpcHQoXHMpezAsfShcLyl7MCx9KFxzKXswLH1cPg==" /> <!--[\<\>] 最严格规则,如有特例可以屏蔽这个规则 --> <add key="Point_Bracket" value="W1w8XD5d" /> <!--(\<[^\<^\>]{0,}\>)--> <add key="Point_Bracket_Pair" value="KFw8W15cPF5cPl17MCx9XD4p"/> <!--\W{0,}document\.cookie[\.\;]{1,}--> <add key="document_cookie" value="XFd7MCx9ZG9jdW1lbnRcLmNvb2tpZVtcLlw7XXswLH0=" /> <!--\\u\S{4,4}\\u--> <add key="unicode" value="XFx1XFN7NCw0fVxcdQ==" /> <!--\<\s{0,}iframe--> <add key="iframe" value="XDxcc3swLH1pZnJhbWU=" /> </urlBlockRules>
高级配置项(根据实际需要选用):
<urlBlockRules> <!-- 以下为选用规则,不是星空默认出厂配置 --> <!--(/\.\.){1,}/ 拦截改变相对路径资源的请求--> <add key="Double_Point_InRBar" value="KCUyZlwuXC4pezEsfSUyZg==" /> <!--(\/\.\.){2,}\/ 拦截改变相对路径资源的请求--> <add key="Double_Point_InRBarCT" value="KFwvXC5cLil7Mix9XC8=" /> <!--\?{1,}[^\/,^\(]{1,}\s{0,}\([^\)]{0,}\)[\s\S]{0,}&user-agent= 拦截url函数注入--> <add key="URL_INJ_Func" value="XD97MSx9W15cLyxeXChdezEsfVxzezAsfVwoW15cKV17MCx9XClbXHNcU117MCx9JnVzZXItYWdlbnQ9" /> <!--解决父级路径访问注入 accessParentPath: ../--> <add key="accessParentPath" value="XC5cLlwv" /> </urlBlockRules>
2. 增加并启用输入数据拦截规则参数
配置节点:website/app_data/Common.config中的<appSettings>节点下
<add key="IsInputBlock" value="True"/>
3. 添加输入数据文本黑名单拦截规则;
配置节点:website/app_data/Common.config中的<packageConfig>节点下
<!-- 实现对明文ap参数的waf 拦截 --> <textBlockRules> <!-- 启用拦截规则参数由Appsettings.IsInputBlock控制,输入数据拦截,拦截点:1、所有服务端输入参数;2、HTML客户端文本录入;--> <!-- 这里的所有value必须符合正向搜索正则表达式,表达式内容必须经过base64编码;--> <!--\<(\s){0,}(\/){0,}(\s){0,}script\>--> <add key="Script_In_Bracket" value="XDwoXHMpezAsfShcLyl7MCx9KFxzKXswLH1zY3JpcHRcPg=="/> <!--\W{0,}document\.cookie[\.\;]{1,}--> <add key="document_cookie" value="XFd7MCx9ZG9jdW1lbnRcLmNvb2tpZVtcLlw7XXsxLH0="/> <!--\<\s{0,}iframe--> <add key="iframe" value="XDxcc3swLH1pZnJhbWU="/> <!--\<[^(\?xml)][^\>^\<]+\=[^\>^\<]+[^\?]\>--> <add key="caller_in_Point_Bracket" value="XDxbXihcP3htbCldW15cPl5cPF0rXD1bXlw+Xlw8XStbXlw/XVw+"/> <add key="caller_in_less_Point_Bracket" value="XDxbXihcP3htbCldW15cPl5cPF0rXD1bXlw+Xlw8XStbXlw/XStbXChcKVw+XCdcIl1bXlw/XQ=="/> </textBlockRules>
4. 启用压缩参数,避免误拦截;
<!--启用HTTP请求压缩--> <add key="SL_Http_Compressed" value="true"/>
【注意事项】
如果二开自定义请求参数存在类注入脚本格式数据或xml数据,请在传入前用base64进行编码,使用时再进行解码,避免木马注入。
【延伸阅读】
站点安全配置:跨站点脚本攻击防范与解决方案
本文2024-09-23 03:48:25发表“云星空知识”栏目。
本文链接:https://wenku.my7c.com/article/kingdee-k3cloud-161221.html