---
order: 0
navTitle: 安全设置
---
# 安全设置

SuccBI提供了丰富的安全相关设置选项，包括**登录安全**、**密码安全**、**安全等保**、**数据加密脱敏**等，通过进行合理的设置可以让系统通过各种相关安全评测，具体设置界面如下图：

![安全设置](./images/2025-08-28-15-25-00.png)

## 安全评测推荐配置{#security-settings}

在系统正式上线运行或开展**信息安全等级保护**测评时，系统推荐配置如下：

|属性|推荐设置|
|:-|:-|
|[密码强度](#password-strength)|**密码最小长度**设置12位以上，勾选**必须包含大小写字母**、**必须包含数字**、**必须包含特殊字符**、**不能包含用户id**|
|[自动检查密码](#password-validity)|勾选**登录时校验强度**、**默认密码检查**，其他属性可视实际情况配置|
|[登录验证](#validate-logon)|勾选**允许锁定保护账号**，**启用图片验证码**，其他属性可视实际情况配置|
|[登录方式](#login-type)|不勾选**允许用户同时多次登录**和**URL登录**，其他属性可视实际情况配置|
|[用户登录](#login-user)|不勾选**匿名用户登录**，如实际业务要求用到匿名用户，需控制好匿名用户权限；如对账号登录安全性要求较高，可启用**系统用户双重登录校验**，其他属性可视实际情况配置|
|[禁用WebDAV](#disable-webdav)|建议勾选，禁用WebDAV可以提高服务器的安全性，防止未经授权的文件操作，禁用后将无法使用ActiveDoc在线编辑功能，可视实际情况配置|
|[启用Ajax加密](#ajax-encryption)|建议勾选,防止某些安全软件将系统查询请求中的部分内容识别为敏感信息，从而拦截请求导致系统异常|
|[Cookie安全传输](#cookie-transmission)|`https`环境下，建议勾选，`http`环境，无需勾选|
|[启用跨域](#cross-domain)|若系统涉及与第三方集成，则需要启用，并配置跨域信任域，参考：[跨域问题](../../dev/integrate/embed-into-3rd.md#cors-iframe)|
|[禁止被嵌入外站Iframe](#prohibit-embedded-iframe)|建议勾选，若项目存在页面[嵌入第三方系统](../../dev/integrate/embed-into-3rd.md)，则无需启用|
|[启用防MIME嗅探](#enable-entimime)|建议勾选，用于防止由MIME类型混淆引发的各类攻击，如XSS、恶意脚本执行|
|[启用内容安全策略](#enable-csp)|建议勾选，预防XSS漏洞|
|[显示执行SQL](#display-sql)|建议不勾选，项目开发阶段建议启用以便开发排查问题|
|[禁止返回异常堆栈](#forbid-exceptions)|建议勾选，异常堆栈常常包含一些敏感信息，会被安全软件识别为信息泄露|
|[禁止输出SourceMap](#forbid-files)|建议勾选，资源映射文件会可能包含一些敏感信息，如源码地址，会被安全软件识别为信息泄露|
|[允许上传的文件类型](#upload-file-restrictions)|根据系统实际情况配置允许上传文件类型，用于防止渗透攻击|

## 密码安全{#password-settings}

用户密码的相关设置，在这里可以设置[密码存储](#password-storage)、[密码强度](#password-strength)、[有效期](#password-validity)、[密码重置](#password-reset)。

### 密码存储{#password-storage}

可以在这里设置密码加密算法，常见的加密算法有`SHA1`、`MD5`、`SM3`，也可以选择`脚本`实现相关函数，具体方法见[钩子脚本](../../dev/script/hooks/hooks-action-ts.md)，选择`明文`后就会明文存储，不使用加密算法。设置对应的加密算法保存后，用户下次修改密码后，密码存储就会使用对应的加密算法。

### 密码强度{#password-strength}

设置了密码强度后，用户第一次登录若使用默认密码，则需要修改密码才能登录。当管理员修改了密码强度，用户第二次登录时若密码不符合密码强度规则，则会根据对应强度规则给出修改建议。

- **密码最小长度**
- **必须包含大小写字母**
- **必须包含数字**
- **必须包含特殊字符**
- **不能包含用户id**
- **容易被黑的密码**：若新密码匹配到此处的规则，则会提示密码太过简单，这里使用枚举方式设定规则
- **密码强度匹配**：这里是一个正则表达式
- **密码强度提示**：当密码未满足**密码强度匹配**的要求时，给用户的提示信息

以上几点是并列关系，可以同时设置，都会生效。

### 自动检查密码{#password-validity}

- **登录时校验强度**：开启后，如果账号密码不满足[密码强度](#password-strength)的校验，则需要先修改密码，才能登录。
- **默认密码检查**：开启后，如果用户从来没有修改过密码，则需要先修改密码，才能登录。
- **记住我的登录状态**：勾选后，登录页面会出现`记住我的登录状态`的勾选框，作用于PC端。
- **记住登录状态的天数**：设置登录状态最长记录多少天，超过这个天数后就需要重新登录。
- **密码最长无修改天数**：当密码的最后修改时间距离当前系统时间大于密码最长无修改天数时，登录后会自动定位到密码修改页面，用户必须修改密码后才能继续操作。

### 密码修改{#password-reset}

- **密码历史记录数**：系统会对已经设置了的密码进行记录，这里表示可被记录的历史条数，如果历史条目数达到上限，会将最先记录的删除，并将新的记录添加进去。修改密码时，不能使用最近记录历史的密码。
- **短信重置密码**：勾选后，可以启用通过手机短信重置密码，参考[重置密码](../../dev/references/web-api/me/resetPassword.md)。
- **允许切换明文展示密码输入**：勾选后，系统中需要输入账号密码的输入框都会展示一个按钮，点击可切换是否展示密码明文。

## 登录安全{#login-settings}

用户登录过程中的相关设置，这里的设置可以影响登录界面的效果，也会影响登录步骤。修改属性后，可点击底部的**保存**按钮，让登录安全设置生效。

### 登录验证{#validate-logon}

- **允许锁定保护账号**：启用后，当用户使用密码登录失败的次数到达**显示警告前尝试次数**设定的值时，系统会开始提示用户距账户被锁定的剩余尝试次数，若失败次数达到**锁定前尝试次数**后，再登录失败就会锁定账户。

:::tip
**显示警告前尝试次数**与**锁定前尝试次数**相等，表示不提示，前者一般要小于后者。
:::

- **图片验证码**：启用后，用户重复登录的次数达到**显示验证码前尝试次数**设定的值时，登录界面就会出现验证码，此时登录，必须要输入正确的验证码才能登录成功。可以设置**验证码字符长度**，一般默认为4位。

### 登录方式{#login-type}

- **允许用户同时多次登录**：启用后，可以使用同一账号同时在多处设备登录。若未启用，在多处设备登录时，则会给出提示，提示可以选择继续登录。
- **启用URL登录**：启用后，可以直接在URL上携带用户密码登录到系统中，参考[URL参数传递用户名密码登录](../../devops/sso/urllogin.md)。为安全考虑，默认是不允许开启的。
- **启用短信验证码登录**：启用后，用户将可以使用账号所绑定手机号获取验证码进行登录，参考[登录API](../../dev/references/web-api/auth/signin.md)，这里会影响到登录页登录框的效果，参考[登录页用户登录模式设置](../../dev/script/system-pages/login-page.md#login-modes)。
- **启用手机密码登录**：启用后，用户将可以在登录界面使用手机号替代用户ID，并且在输入正确密码后登录到系统中，这里的手机号即[用户表PHONE字段](/sys-tables/sec/USERS)。

:::tip
如果用户信息里面没有手机号码，是无法登录的，需要先把手机号码更新。
:::

### 用户登录{#login-user}

- **启用匿名用户**：启用后，在用户组中给[匿名用户组](../../permission/groups.md#anonymous)分配权限，即可不登录访问资源。
- **启用外部用户**：启用后，在用户组中给[外部用户](../../permission/users.md#external-users)分配权限，并且会影响到登录页登录框的效果，参考[登录页用户登录模式设置](../../dev/script/system-pages/login-page.md#login-modes)。
- **外部用户登录方式**：用于控制默认登录界面会针对外部用户展示哪些登录方式，有默认账号登录、手机短信登录、二维码登录方式可供选择。
- **系统用户登录方式**：用于控制默认登录界面会针对系统用户展示哪些登录方式。有默认账号登录、手机短信登录、二维码登录方式可供选择。如果系统用户和外部用户都没有选择任何一种登录方式，默认会开启使用系统账号登录方式。
- **启用系统用户双重登录校验**：开启后，系统用户在登录时需要正确输入账号密码后，再次输入手机验证码才能正确登录。
- **启用外部用户双重登录校验**：开启后，[外部用户](../../permission/users.md#external-users)在登录时需要正确输入账号密码后，再次输入手机验证码才能正确登录。

### 用户信息{#user-info}

- **允许修改用户名称**：勾选后，将允许用户在个人中心修改用户的名称，默认勾选。
- **启用手机绑定验证**：启用后，用户在个人中心修改手机号时，将会发送手机短信进行绑定验证。
- **启用邮箱绑定验证**：启用后，用户在个人中心修改邮箱时，将会发送邮件进行绑定验证。

## 会话管理{#-session-manage}

设置会话存储位置，修改此选项需要重启后才生效。支持两种存储方式：

- **默认**：使用web容器（如Tomcat）默认存储。
- **redis**：将会话存储在redis中，便于集群部署会话转移.

## 安全等保{#classified-protection}

用户使用过程中数据、请求的相关设置，这里的设置影响到数据、请求的安全策略。

### 禁用WebDAV{#disable-webdav}

禁用WebDAV后，在元数据界面和app编辑器中，将无法使用右键编辑打开对应的word，excel和PPT页面。

### 启用Ajax加密{#ajax-encryption}

开启Ajax加密后，所有的Ajax请求，包括body和url都会进行加密，且服务器返回的所有json信息也会被加密。

开启此选项对系统性能有一定影响，在安全评测报告Ajax请求参数或服务器返回内容有不合法内容时可考虑开启。

### Cookie安全传输{#cookie-transmission}

开启Cookie安全传输后，只有使用https等加密协议访问系统时，cookie才会被正确设置，可以通过`Cookie SameSite`设置关闭Cookie限制的请求，具体可参照[cookie-samesite](../../dev/integrate/faq/cookie-samesite.md)。

### 启用跨域{#cross-domain}

开启启动跨域后，在`跨域信任域`中可设置信任域如域名、指定ip，使满足设置的跨域请求被当前服务器接收，信任域的设置规则如下：

1. **使用https协议**：如`https://www.succsoft.com`，表示只信任https协议的域名
2. **使用http协议**：如`http://www.succsoft.com`，表示信任http和https协议的域名
3. **使用带端口的域或ip**：如`http://192.168.1.1:8080`，表示信任指定端口的域名或者ip

**注意：当使用ajax跨域请求的时候需要针对 `XMLHttpRequest` 配置上 `withCredentials=true`（[参考文档](https://developer.mozilla.org/zh-CN/docs/Web/API/XMLHttpRequest/withCredentials)），否则可能会因为cookie没有传递给服务器，导致请求响应错误。**

### 禁止被嵌入外站Iframe{#prohibit-embedded-iframe}

禁止被嵌入外站Iframe后，响应头中会增加响应头`X-Frame-Options:SAMEORIGIN`，禁止将本系统的页面嵌入到其他网站页面中。

### 启用防MIME嗅探{#enable-entimime}

用于防止基于MIME类型混淆的攻击，启用防MIME嗅探后，响应头会设置`X-Content-Type-Options:nosniff`，如下请求会被阻止：

1. 请求类型是"style"，但MIME类型不是"text/css"
2. 请求类型是"script"，但MIME类型不是JavaScript MIME类型

### 启用内容安全策略{#enable-csp}

启用内容安全策略后会将响应头`X-XSS-Protection`设置为`1; mode=block`，来通知浏览器开启XSS检测，并可通过`安全策略内容`设置Content-Security-Policy中的内容，具体介绍可参照[XSS信息](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/Headers/X-XSS-Protection)和[Content-Security-Policy信息](https://developer.mozilla.org/zh-CN/docs/Web/HTTP/CSP)

### 显示执行SQL{#display-sql}

启用之后将在查询结果中输出SQL、查询的Query等信息，SQL属于敏感信息，一般不会输出到计算日志中。在测试阶段，为了方便了解系统执行的SQL可以开启，此选项一般用于测试阶段，正式交付此选项不进行启用。

### 禁止返回异常堆栈{#forbid-exceptions}

启用后将禁止输出异常信息到客户端，异常堆栈常常包含一些敏感信息，如源码、绝对路径、cookies、提交的数据等，输出到客户端可能造成信息泄露，产生安全问题。

### 禁止输出SourceMap{#forbid-files}

启用后将禁止输出资源映射文件到客户端，资源映射文件会可能包含一些敏感信息，如源码地址，从而产生安全问题。

## 阈值设置{#thresholds}

环境运行时阈值的相关设置，这里可以设置**短信验证码**、**上传文件大小阈值**、**HTTPClient连接**等。

### 短信验证码{#captcha}

勾选[启用短信验证码登录](#login-type)后生效，用户使用短信验证码方式登录时，系统可以对验证码的长度、发送频率、有效时长做出一些设置，也可以指定验证码重试次数以及锁定时长。

- **短信验证码长度**，一般默认为6个字符。
- **验证码发送频率**，重发验证码的最短时间间隔。
- **验证码有效时长**，默认为10分钟。
- **手机短信锁定时长**，超过`短信验证码重试次数`后的锁定时长，默认锁定时长为10分钟。
- **短信验证码重试次数**，手机号被锁定前，可以尝试输入验证码的次数，默认为5次。

### 文件上传大小{#upload-file-restrictions}

- **上传文件阈值**：用户单次上传文件的大小限制，单位为Kb，默认为102400Kb(100Mb)。
- **允许上传的文件类型**：允许用户上传文件的类型，多个文件类型用逗号隔开。
- **上传视频文件阈值**：用户单次上传视频文件的大小限制，单位Kb，默认为51200Kb(50Mb)。
- **上传图片文件阈值**：用户单次上传图片文件的大小限制，单位为Kb，默认为10240Kb(10Mb)。
- **上传3D模型阈值**：用户上传3D模型文件的大小限制，单位为Kb，默认为5120Kb(5Mb)。

### 数据查询阈值{#query-threshold}

设置用户使用一次SQL查询最多可以返回多少行数据，默认返回500000行。

### 缓存阈值{#cache-size}

- **前端自动缓存数据阈值**：模型属性[前端预加载数据](../../data-gov/model/model-settings.md#downloadalldatamode)没有设置为**允许全量数据**时，根据该阈值自动判断模型是否允许全量下载，默认1000行。
- **前端缓存数据最大行数**：模型属性[前端预加载数据](../../data-gov/model/model-settings.md#downloadalldatamode)设置为**允许全量数据**时，数据量必须小于等于该阈值才能下载全量数据，默认100000行。
- **维表内存缓存阈值**：维表数据一次缓存到内存的最大行数，当维表数据小于阈值时，可全量读取到内存以提高运行效率，默认为1000000行。
- **静态文件缓存秒数**：元数据库中的静态文件如图片、js文件、css文件等在浏览器中进行缓存的有效时间，默认为3600秒。

### HTTPClient连接{#httpclient-pool}

- **HTTPClient连接池大小**：系统访问第三方服务时需要http连接池来提高性能，默认为50，修改此参数会同步修改http中的maxPoolSize参数。
- **HTTPClient最大保持连接时间**：客户端与服务端建立持久连接的最大连接时间，超过此时间，连接会被回收。默认为30000，修改此参数会同步修改http中的keepAliveTime参数。
- **HTTPClient与服务端建立连接的超时时间**：客户端与服务端建立连接的超时时间，超过此时间，客户端会停止请求。默认为10000，修改此参数会同步修改http中的connectionTimeout参数。
- **HTTPClient等待服务端响应数据的超时时间**：客户端与服务端建立连接时，等待服务端响应的超时时间，超过该时间，客户端会停止请求。默认为5000，修修改此参数会同步修改http中的socketTimeout参数。

### 缓慢变化数据全量下载阈值{#download-threshold}

在模型设置缓慢变化时，所有历史数据下载到前端浏览器的阈值，默认为50000行，设置方法可参照[缓慢变化数据提取](../../data-process/data-output/slowchange-output.md)。

### 线程池{#threads}

- **调度线程池最大线程**：执行计划任务时的最多可用线程数目，默认为20线程，计划任务的设置方法可参照[计划管理](../../schedule/README.md#manage-schedule)。
- **数据迁移最大线程数**：跨源迁移数据时最大可用线程数，默认为50线程。

## 回归测试{#test}

环境升级或者系统修改配置后进行回归测试的相关设置，这里的设置影响`回归测试脚本`的启用及可用于回归测试的`测试用户`。

- **启用回归测试脚本**：启用后，用户可在元数据项目新建test目录，添加回归测试脚本进行测试。具体测试方法可参照[回归测试](../../devops/test/regression-test.md)。
- **测试用户**：勾选`启用回归测试脚本`后生效，用于设置测试过程中可使用的账号。执行回归测试过程中，管理员可以用这些用户身份进行免密登录测试。若设置多个账号，各个账号需以逗号隔开。

## 系统日志设置{#sys-log}

- **日志记录级别**：系统日志表中记录的日志信息的级别，分为`OFF`、`FATAL`、`ERROR`、`IMPT`、`INFO`、`VERB`和`ALL`，日志记录越详细，占用的数据库空间越大，日常生产环境建议使用`INFO`级别的日志记录，日志级别描述如下：

|日志级别|级别描述|
|:-:|:-:|
|ERROR|错误|
|FATAL|严重|
|IMPT|重要|
|INFO|信息|
|OFF|关闭|
|VERB|详细|
|ALL|所有|

- **当前日志表大小**：记录当前系统日志表的行数和表大小，系统日志表的介绍可参照[LOG\_SYS-系统日志表](/sys/LOG_SYS)
- **记录文件修改历史**：勾选记后，可在文件的属性栏查看该文件的历史版本内容，可较方便查看和对比文件修改历史。
- **当前文件历史表大小**：当前记录文件修改历史的表的大小，历史版本表的介绍可参照[META\_REVISIONS-历史版本表](/sys-tables/meta/META_REVISIONS)
- **脚本输出日志限制**：设置脚本文件一次执行时使用print函数最多输出多少条日志，默认为10000条。
- **记录模型表信息**：将在系统表中自动记录模型的提取状态、行数、存储空间等关键信息。

## 数据脱敏{#desensitization}

当前系统中对数据脱敏策略的设置，系统默认自带`身份证号`、`手机号`、`姓名`等常见脱敏策略供使用，你可以点击编辑进行修改，也可以点击添加新增脱敏规则。添加修改完毕后，点击底部的`保存`按钮生效。模型中使用数据脱敏可参考[脱敏](../../data-gov/model/data-security.md#desensitization)。

### 掩码数据脱敏{#data-masking}

![数据脱敏](./images/2025-09-02-15-57-00.png)

掩码方式数据脱敏配置如下：

- **ID**：脱敏规则分配的唯一id，新建脱敏规则时由系统自动分配。
- **标题**：对脱敏规则的描述，必填。
- **脱敏方式**：脱敏方式选择掩码方式。
- **掩码设置**：可设置脱敏数据开头和末尾字符的保留个数以及替换掩码的字符。
- **测试示例**：输入测试示例后，可显示脱敏后的结果，必填。

### 正则表达式数据脱敏{#regular-desensitization}

![数据脱敏](./images/2025-09-02-15-58-00.png)

正则表达式数据脱敏配置如下：

- **ID**：脱敏规则分配的唯一id，新建脱敏规则时由系统自动分配。
- **标题**：对脱敏规则的描述，必填。
- **脱敏方式**：脱敏方式选择正则表达式。
- **正则表达式**：脱敏数据的正则表达式写法。
- **替换为**：将脱敏数据替换后的写法，此处也为正则表达式。
- **测试示例**：输入测试示例后，可显示脱敏后的结果，必填。

## 数据加密{#data-encryption}

当前系统中对数据加密策略的设置，内置的加密算法有`SM4`和`AES`，用户可根据需要自行添加或修改加密策略。添加修改完毕后，点击底部的`保存`按钮生效，模型中使用数据加密可参考[加密](../../data-gov/model/data-security.md#encryption)。

::: warning 警告
若修改已有加密策略中的密钥，会导致以前加密的数据无法解密！
:::
![数据加密](./images/2025-09-02-15-59-00.png)

数据加密配置如下：

- **ID**：加密策略分配的唯一ID，新建加密策略时由系统自动分配。
- **标题**：对加密策略的描述，必填。
- **算法**：可选择SM4算法或者AES算法。
- **密钥**：加密策略使用的密钥，可自行填写，也可由系统自动生成，必填。

## 系统安全{#system-security}

- **启用项目内计划管理**：计划任务默认只能系统全局管理，启用后，可以给项目管理员分配项目内的计划和任务的管理、查看权限，项目管理员可以管理各自项目内的计划任务。

:::tip
计划任务区分全局和非全局，项目列表下创建的计划任务为全局计划任务，任何项目可见；项目内创建的计划任务为非全局计划任务，仅该项目以及全局计划任务可见。
:::

## 常见问题{#common-encryption}

以下为安全等保测评时，可通过系统安全设置解决的安全漏洞，以及相应解决方案：

### 跨域资源共享CORS漏洞

**解决方案**

在`系统设置`->`安全设置`->`安全等保`中取消勾选启用[跨域](#cross-domain)。

### “Content-Security-Policy”头中缺少“Script-Src”或“Default-src”策略或相应策略不安全

**解决方案**

启用[内容安全策略](#enable-csp)。

### SQL注入漏洞

**解决方案**

勾选[启用Ajax加密](#ajax-encryption)以及取消勾选[显示执行SQL](#display-sql)。

### 跨站点请求伪造

**解决方案**

勾选[禁止被嵌入外站Iframe](#prohibit-embedded-iframe)。
