(6.X:2017-4-20之后的最新功能累积更新才支持本功能。PT112639, 下载地址; 7.X:支持;)
1、拦截XSS攻击配置:
1.1、在Common.config中的<appSettings>节点下增加并启用输入数据拦截规则参数 <add key="IsInputBlock" value="True"/>参数;
1.2、在Common.config中的<packageConfig>节点下添加输入数据文本黑名单拦截规则配置如下:
<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+"/>
</textBlockRules>
复制代码
1.3、同时在<appSettings>启用压缩参数,避免误拦截, 如下:
<!--启用HTTP请求压缩-->
<add key="SL_Http_Compressed" value="true"/>
复制代码
2、保护Cookie的安全设置:
2.1、在Web.Config的<system.web>节点下添加配置选项<httpCookies httpOnlyCookies="true" />,httpCookies选项解决cookie的httponly和secure参数的控制,secure只能在https协议下配置;
2.2、也可以在Common.config文件中的<appSettings>节点下配置安全cookie参数如下:
<add key="IsSecureCookie" value ="True"/>
3、防止网站被别的站点iframe嵌套:
3.1、在Web.Config中的<system.webserver>节点下配置 x-frame-options选项;
<!-- 增加HTTP协议参数 -->
<httpProtocol>
<customHeaders>
<!-- 避免了点击劫持 (clickjacking) 的攻击。Value:DENY,SAMEORIGIN,ALLOW-FROM -->
<!--<add name="X-Frame-Options" value="SAMEORIGIN" /> -->
</customHeaders>
</httpProtocol>
复制代码
例外:但是x-Frame-options的支持受浏览器的限制,在部分浏览器是支持不了的。可以参考微软文档。https://blogs.msdn.microsoft.com/ieinternals/2010/03/30/combating-clickjacking-with-x-frame-options/
4、隐藏堆栈信息:
4.1、通过在Common.config里面的<appSettings>节点下添加StackTraceLevel参数为,并设置为0,实现在界面上的错误提示仅提示错误编码;
<add key="StackTraceLevel" value ="0"/>
4.2、参数说明:
4.2.1、业务级别下StackTrackLevel=0,仅展示错误信息和编码,服务端的Log日志中可以按错误编码找到完整堆栈信息;
4.2.2、程序级别下StackTrackLevel=100,展示所有错误信息和编码,以及堆栈信息;
5、Sql注入拦截
5.1、通过在Common.config里面的<appSettings>节点下添加以下节点;
<!--Sql关键字-->
<add key="SqlKeys" value="select|insert|delete|from|drop|update|count|chr|char|mid|truncate|exec|net user|or|and|xp_cmdshell"/>
<!--脚本关键字-->
<add key="ScriptKeys" value="& amp;|& quot;|& gt;|& lt;"/>(这里要做html转码,论坛原因需要去掉&后的空格使用)
复制代码
5.2、用Administrator登录系统,在【参数设置】功能下,选择【基础管理-BOS平台】分组,勾选【启用脚本关键字合法性验证】和【启用Sql关键字合法性验证】选项;
6、防止上传目录文件泄露
6.1、在IIS的站点目录下,配置【处理程序映射】功能中添加【添加托管处理程序】;
6.2、录入请求路径:FileUploadServices/UploadFiles/*.* ;类型录入 Kingdee.BOS.Web.FileServer.Download, Kingdee.BOS.Web;
6.3、如下图:
2017-07-28 上传
下载附件 (98.13 KB)
添加托管处理程序
7、上传文件白名单设置
7.1、通过在Common.config里面的<appSettings>节点下添加以下节点;
<add key="UploadWhiteList" value="txt,pdf,doc,docx,xls,xlsx,ppt,pptx,rft,jpg,png,bmp,gif,jpeg,rar,zip,dat,key,msg,cad,btw,avi,rmvb,wps,et,dps,vsd" />
<add key="DocSuffix" value="doc|docx|xls|xlsx|pdf|ppt|pptx|txt|wps|rtf|et|dps|vsd" />
<add key="ImageSuffix" value="jpeg|jpg|png|gif|bmp|cur" />
<add key="VideoSuffix" value="wmv|avi|swf|wav|mpeg|aif|mdi|mpg|rmvb|flv|mkv" />
<add key="PackageSuffix" value="kdpkg" />
复制代码
7.2、即可实现上传文件白名单功能;
8、反向代理实现HTTPS->http映射
8.1、通过反向代理实现公网443->私网80的映射;
8.2、在反向代理服务器上设置Request的header参数X-Forwarded-Proto=https即可;
8.3、安装6.x最新补丁,或者7.x的最新补丁;
8.4、或者参考 【https://vip.kingdee.com/article/24800】的【问题7】;
9、IIS版本号在请求响应头中泄漏
解决方案:按照微软官方文档配置即可去掉版本号;
参考:https://blogs.msdn.microsoft.com/varunm/2013/04/23/remove-unwanted-http-response-headers/
其他参考:
http://www.cnblogs.com/dudu/p/iis-remove-response-readers.html
https://bbs.aliyun.com/read/535787.html?page=e
10、IIS中关闭Options谓词方法
解决方案:在IIS中,选择根节点或者具体网站,然后在右侧的功能中选择【请求筛选】-->【HTTP谓词】-->右键添加【拒绝谓词】-->输入【OPTIONS】,然后确定即可
11、关于Silverlight的跨域访问配置问题 clientaccesspolicy.xml
参考: https://vip.kingdee.com/article/41358
12、如果严格某种请求的谓语动词
如果是针对所有请求的谓语动词,可以参考【10、IIS中关闭Options谓词方法】
只允许Web服务器响应GET和POST请求(金蝶云要求HEAD,GET,POST),其他则拒绝的方法,需要在iis管理器中的处理程序映射功能中设置。如下图:
2018-10-10 上传
下载附件 (354.58 KB)
GetPOST设置
推荐阅读