电脑桌面
添加蚂蚁七词文库到电脑桌面
安装后可以在桌面快捷访问

金蝶云星空 配置站点安全配置与参数

来源:金蝶云社区作者:金蝶2024-09-2312

金蝶云星空 配置站点安全配置与参数

本篇基础:xml语法,http/https基础知识,iis基础知识

目标:收集常用站点安全配置方案,帮助客户现场快速配置和通过第三方安全扫描工具认证。( 7.X:支持;)


1、拦截XSS攻击配置(IISRESET)

1.1、URL请求头拦截规则,在website/app_data/Common.config中的<packageConfig>节点下找到子节点<urlBlockRules>,修改或添加相应需要的规则项,完整规则列表参考下面配置数据规则高速缓存修改需要重启IIS才能生效,请在非生产时间修改
    <!-- 实现对 http[s]://xxx.xxx.xxx.xxx/k3cloud/目录下URL+headers访问的waf 拦截 (PT-146876 [7.6.0.202105] 发布时间:2021/5/13 构建号:7.6.2171.1)-->
    <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"/>
      <add key="document_cookie" value="ZG9jdW1lbnRcLmNvb2tpZVtcLlw7XHNcK1wpXXswLDF9" />
      <!--\\u\S{4,4}\\u-->
      <add key="unicode" value="XFx1XFN7NCw0fVxcdQ==" />
      <!--\<\s{0,}iframe-->
      <add key="iframe" value="XDxcc3swLH1pZnJhbWU=" />
      
      <!-- 以下为选用规则,不是星空默认出厂配置 -->
      <!--(/\.\.){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>


1.2、在website/app_data/Common.config中的<appSettings>节点下增加并启用输入数据拦截规则参数 <add key="IsInputBlock" value="True"/>参数,同时确保启用了数据压缩【1.1.4】;


1.3、在website/app_data/Common.config中的<packageConfig>节点下添加输入数据文本黑名单拦截规则配置如下(规则高速缓存修改需要重启IIS才能生效,请在非生产时间修改):
    <!-- 实现对明文ap参数的waf 拦截 -->
    <textBlockRules>
      <!-- 启用拦截规则参数由Appsettings.IsInputBlock控制,输入数据拦截,拦截点:1、所有服务端输入参数;2、HTML客户端文本录入;-->
      <!-- 这里的所有value必须符合正向搜索正则表达式,表达式内容必须经过base64编码;-->
      <!--\<(\s){0,}(\/){0,}(\s){0,}script\>-->
      <add key="Script_In_Bracket" value="XDwoXHMpezAsfShcLyl7MCx9KFxzKXswLH1zY3JpcHQoXHMpezAsfShcLyl7MCx9KFxzKXswLH1cPg==" />
      <add key="document_cookie" value="ZG9jdW1lbnRcLmNvb2tpZVtcLlw7XHNcK1wpXXswLDF9"/>
      <!--\<\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>


1.4、同时在<appSettings>启用压缩参数,避免误拦截, 如下:
 <!--启用HTTP请求压缩-->
 <add key="SL_Http_Compressed" value="true"/>


1.5、如果二开自定义请求参数存在类注入脚本格式数据或xml数据,请在传入前用base64进行编码,使用时再进行解码,避免木马注入。


1.6、添加强制转义特殊字符配置,解决url扩展威胁,在app_data/common.config的appsettings中增加自定义转义如下。

<!-- PT-146926 [8.0.0.20220922] 发布时间:2022/9/22 构建号:8.0.361.9, 强制转义 [`'\(\)\s\<\>\&\=] 为下划线 -->
<add key="__DirPathXssCharsPattern__" value="[`'\(\)\s\&lt;\&gt;\&quot;\&amp;\=]" />

或者升级到最新版本,该参数在 【PT-151005 [8.2.0.20231109] 发布时间:2023/11/9 构建号:8.2.775.7 】已经作为出厂配置,升级该补丁即可。


2、保护Cookie的安全设置


2.1、在website/Web.Config的<system.web>节点下添加配置选项 httpCookies ,httpCookies选项解决cookie的httponly和secure参数的控制,secure只能在https协议下配置; (由于某些iis版本可能不生效,可以参考2.2强制配置)
<httpCookies httpOnlyCookies="true" requireSSL="true" />


2.2、也可以在website/app_data/Common.config文件中的<appSettings>节点下配置安全cookie参数如下: 
 <!-- PT141347[7.3.1391.1] 2019/9/20-->
 <add key="IsSecureCookie" value="True"/>
 <!-- PT141347[7.3.1391.1] 2019/9/20-->
 <add key="IsAspNetSecureCookie" value="True"/>


3、防止网站被别的站点iframe嵌套

3.1、配置x-frame-options白名单2020-08-27补丁的common.config中配置【DefaultFrameOptions】和【FrameOptionsWhiteList】参数,参考 https://vip.kingdee.com/article/146280 (可忽略 3.2 说明)
3.2、在WebSite/Web.Config中的<system.webserver>节点下配置 x-frame-options选项;
[例子1:同源嵌套]
<!-- 增加HTTP协议参数 -->
    <httpProtocol>
      <customHeaders>
        <!-- 避免了点击劫持 (clickjacking) 的攻击。Value:DENY,SAMEORIGIN,ALLOW-FROM -->
        <add name="X-Frame-Options" value="
SAMEORIGIN
" /> 
      </customHeaders>
    </httpProtocol>
[例子2:指定iframe所在页面的站点地址嵌套本网站页面]
    <!-- 增加HTTP协议参数 -->
    <httpProtocol>
      <customHeaders>
        <!-- 指定iframe所在页面的站点地址嵌套本网站页面 例如云之家  https://www.yunzhijia.com-->
        <add name="X-Frame-Options" value="
ALLOW-FROM
 https://www.yunzhijia.com/" />
      </customHeaders>
    </httpProtocol>
    实例可参考jjbear的帖子: https://vip.kingdee.com/article/170680 
[例子3:服务端硬编码]
如果编程实现,可以考虑在服务端代码中,每个请求响应都加入硬编码 (不推荐)
response.headers["X-Frame-Options"] = "ALLOW-FROM https://www.yunzhijia.com"
例外:但是x-Frame-options的支持受浏览器的限制,在部分浏览器是支持不了的。可以参考微软文档。


4、隐藏堆栈信息

4.1、通过在website/app_data/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、通过在website/app_data/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、如下图:


image.webp



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.4、或者参考 下面链接的【问题7】;


9、IIS版本号在请求响应头中泄漏(使用微软rewrite模块)

解决方案:按照微软官方文档配置即可去掉版本号; 
参考: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

》》归纳总结如下


9.1、IIS 删除asp.net版本
image.webp


9.2、删除服务器版本

9.2.1、安装微软 IIS URL Rewrite 模块

》微软官方说明  https://docs.microsoft.com/en-us/iis/extensions/url-rewrite-module/using-the-url-rewrite-module

》微软官方下载地址:https://www.iis.net/downloads/microsoft/url-rewrite

》简体中文版下载地址是:上面下载地址下方有各种语言的下载链接。

》安装过程中出现2503错误估计是C:\windows\temp权限不够目录权限不足,可设置为完全控制解决,并用管理员角色进行安装。

》安装后出现503错误,可能是操作系统没有更新微软安全补丁,更新到最新补丁可以解决。

》安装报版本过低,参考本文疑问23。

》2012R2的操作系统没有更新系统补丁的情况下出现该问题,更新补丁后问题解决。

.

9.2.2、配置web.config重写规则

在 system.webServer 节点最后加入, 如果rewrite规则已经存在,就把子项按节点层次融合在一起:
    
    <rewrite>
        <outboundRules>
            <rule name="REMOVE_RESPONSE_SERVER">
                <match serverVariable="RESPONSE_SERVER" pattern=".*" />
                <action type="Rewrite" />
            </rule>
        </outboundRules>
    </rewrite>


9.3、移除X-AspNet-Version

》》在web.config的<httpRuntime>中添加 属性 enableVersionHeader="false"

image.webp


9.4 移除etag标识:

》》配置 web.config配置rewrite的重写规则的出站outboundRules规则如下:

<rule name="Remove ETag">
    <match serverVariable="RESPONSE_ETag" pattern=".+" />
    <action type="Rewrite" value="" />
</rule>


9.5 IIS的一些其他Header设置可参考外部资料,mozila官方网站说明 (注意浏览器品牌版本兼容性)

【http标头】https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/Accept 


9.6  针对IIS根节点的版本问题,例如对响应的头服务器版本号修改的需求,如何配置?

》针对IIS根节点的请求,需要修改响应头变量时,需要把rewrite规则从星空website目录移动到iis的根目录下。iis根目录一般默认是安装在C:\inetpub\wwwroot下,例如对响应的头服务器版本号修改的需求,可以把关于服务器版本号的rewrite规则迁移到iis根节点目录的C:\inetpub\wwwroot\web.config中(website/web.config要相应移除对应的rewrite配置,避免与上级节点重复引起iis错误)。


9.7 配置完成后,需要重启IIS,同时清理测试客户端的浏览器本地缓存文件,再进行相关测试操作。


10、 IIS关闭谓词Trace、OPTIONS方法

解决方案:

10.1、方法1:web.config 在<configuration>节点下添加如下代码,只允许开启GET、POST和HEAD方法: 

<system.webServer>
 <security>
     <requestFiltering>
         <verbs allowUnlisted="false">
             <add verb="GET" allowed="true"/>
             <add verb="POST" allowed="true"/>
             <add verb="HEAD" allowed="true"/>
         </verbs>
     </requestFiltering>
 </security>
</system.webServer>


10.2、方法2:IIS 里面有个请求筛选,选择根节点或者具体网站,然后在右侧的功能中选择【请求筛选】-->【HTTP谓词】-->右键添加【拒绝谓词】-->输入【OPTIONS】,然后确定即可。


11、关于Silverlight的跨域访问配置问题 clientaccesspolicy.xml  

解决方案参考: 

【https://vip.kingdee.com/article/10182】


12、如果严格某种请求的谓语动词 

解决方案:
如果是针对所有请求的谓语动词,可以参考【10、IIS中关闭Options谓词方法】

只允许Web服务器响应GET和POST请求(金蝶云要求HEAD,GET,POST),其他则拒绝的方法,需要在iis管理器中的处理程序映射功能中设置。如下图:

image.webp

13、如何启用安全验证码功能

解决方案:
13.1,管理员登陆管理中心(http://xxx.xxx.xxx.xxx:8000);
13.2,打开数据中心列表;

13.3,设置菜单中选系统参数,勾选启用验证码即可;

image.webp

14、如何屏蔽html5的调试模式

解决方案:
14.1、通过在website/app_data/Common.config里面的<appSettings>节点下添加以下节点;
    <!--强制不允许终端启用调试模式,目前主要用于HTML5端-->
    <add key="AllowDebugMode" value="False" />
14.2、保存后,终端电脑只需要重新登入系统即可生效。


15、HTML5的JQuery如何自己进行升级替换

解决方案:
15.1、HTML5的jquery框架可以到 https://jquery.com/download/   下载最新jquery.xxx.min.js文件,改名名为jquery.min.js 并替换到应用服务器 WebSite/HTML5/Script/thirdpart/jquery/ 目录即可;
15.2、由于jquery为底层框架,替换建议在测试环境进行替换,并做好单据以及列表的应用测试后,再替换到正式环境。替换前请备份好原文件
15.3、清理客户端浏览器的缓存才能生效,清理浏览器缓存可以参考: https://vip.kingdee.com/article/45408 
15.4、关于通用JQuery框架的说明参考: https://vip.kingdee.com/article/141931013949127680 
15.5、关于website/jquery/jquery.js是Silverilght使用的,Silverlight由于需要兼容IE11以下版本,例如IE8等常用浏览器,不建议切换jquery系列,因为兼容IE8等浏览器的最高系列为1.x版本非1.x的不能兼容老的浏览器。(如果确认不使用可去掉该目录,或者确认不使用老浏览器,可以参考HTML5的修改方法,手工替换jquery.js文件为3.x系列的最新版本)
15.6、云星空功能补丁【PT-146869 [7.6.0.202103]  2021/3/25  构建号7.6.2122.7】版本HTML5目录的Jquery框架已经升级到2021年最新3.6.0版本。最新V8.2升级到3.7.1。星空后续会持续跟踪jquery进行版本适配升级。

》》如何下载jquery组件,例如下面图片(只是例子,有最新版本要下最新版本)

image.webp

16、用户账号在登录页可枚举

答:2019-10-31补丁PT142914  [7.5.1450.1] 已经解决了“用户账号可枚举”问题


17、如何配置cookie的samesite参数?

答:如果客户使用了星空移动端,则这个samesite不能配置,因为钉钉和部分老手机WEBVIEW不支持这个SameSite参数导致SESSION丢失,从而导致无法使用星空移动网页相关功能,这个是由具体移动设备的第三方App或浏览器决定的。
》Web.config的配置和移动端相关影响说明具体参考【https://vip.kingdee.com/article/136841261830379264  】
》升级操作系统的 DotNetFrameWork 4.7.2 / 4.8, 微软关于samesite的说明参考 

金蝶云星空 配置站点安全配置与参数

本篇基础:xml语法,http/https基础知识,iis基础知识目标:收集常用站点安全配置方案,帮助客户现场快速配置和通过第三方安全扫描工具认证...
点击下载文档文档为doc格式

声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。如若本站内容侵犯了原著者的合法权益,可联系本站删除。

已经是第一篇
确认删除?
回到顶部
客服QQ
  • 客服QQ点击这里给我发消息
QQ群
  • 答案:my7c点击这里加入QQ群
支持邮箱
微信
  • 微信