---
url: /v6.2/security-audit-faq.md
---
# 安全与审计

这类问题常常混在一起：有的是**安全策略主动拦截**，有的是**外部平台白名单没配**，有的是**数据导出管控**，还有的是**事后审计追踪**。如果不先分层，经常会误判成“系统坏了”。

## 为什么正常查询也会被提示 SQL 注入拦截？

先不要默认是误杀。

如果你们启用了相关安全拦截策略，而请求体里又包含了容易触发风控判断的内容，就可能被判定为 SQL 注入风险。

针对这类已知场景，客户服务案例里的处理方式是在 `conf/hengshi-sense-env.sh` 中启用：

```bash
export ENABLE_BODY_ENCODE=true
```

这个配置的目的，是降低请求体内容直接触发拦截的概率。\
如果你们现场遇到的是“某些查询参数一带特殊内容就被拦截”，优先检查这里，而不是先去改业务 SQL。

## 什么时候该优先怀疑是“安全策略拦截”，不是功能故障？

高频信号包括：

* 同一功能只有带特定参数或特定内容时失败
* 换一组值就正常
* 页面提示更像拦截、拒绝或风控，而不是普通查询报错
* 代理、网关、安全设备侧也有对应拦截痕迹

这类问题的关键，不是盲目重试，而是先确认拦截发生在**应用本身、代理层，还是外围安全设备**。

## 不想让用户随便把数据导走，应该先用什么能力？

先看**安全策略里的导出控制**，不要先靠流程约束。

系统支持：

* 全局控制是否允许导出数据
* 细化哪些用户可导出、哪些用户不可导出
* 配置导出行数限制

这套能力适合“允许看，但不允许大规模导出”的场景。

## 导出行数限制到底是干什么的？

它不是为了提升导出性能，而是为了**控制数据外泄规模**。

典型场景是：

* 允许用户导出少量示例数据核对
* 但不允许一次性导出大量明细

如果客户问“为什么不能全量导出”，先确认这是不是平台安全策略主动限制，而不是产品坏了。

## 水印保护能覆盖哪些场景？

水印不仅影响页面显示，也能覆盖导出产物。

开启后：

* 系统页面可显示水印
* 导出的 PDF / PPT / PNG 也会带水印

这类能力适合对外分享、领导汇报、外部协作等需要降低截图转发和二次传播风险的场景。

## 为什么应用里关不掉水印？

先看是不是系统级全局设置没给下放权限。

水印遵循“**全局优先**”：

* 如果系统全局没开，应用侧不能单独开
* 如果系统全局开了，但没启用“允许应用单独关闭水印”，应用管理员也不能自己关

所以这不是应用 owner 权限不够，而是平台是否允许把控制权下放。

## 公开链接里的过滤条件为什么还要做 HMAC 保护？

因为如果过滤条件能被随意篡改，别人就可能借公开链接试探并查询不该看的数据。

HMAC 签名保护的本质，是确保公开链接里的过滤条件不能被别人直接改值后继续使用。\
如果你们要把公开链接发给外部用户，且链接里带了过滤条件，这项能力就非常关键。

## 企业微信里打开嵌入页面出现 `Writable Error Page`，为什么看起来像系统坏了？

这类情况很多时候不是 HENGSHI 页面本身坏了，而是**企业微信侧白名单没配**。

客户服务案例里的处理方式是：在企业微信管理后台配置 **IP 白名单**，填入 HENGSHI SENSE 服务器公网 IP。

所以遇到这类问题时，不要只盯应用前端，要同步检查第三方平台接入限制。

## 如果事后要追谁导出了数据、导出了多少，去哪里看？

看**系统操作记录 / 审计日志**。

系统管理员可以按：

* 时间
* 操作者
* IP
* 行为
* 结果
* 类别

等维度筛选记录。

如果要专门审计数据导出行为，可以过滤“**导出数据**”，查看是谁、什么时候、对哪个对象导出了多少数据。

## 安全与审计问题排障时，第一优先该区分什么？

先区分是下面哪一层：

1. 平台自身安全策略（导出限制、水印、HMAC 等）
2. 平台请求体或查询内容触发的安全拦截
3. 第三方平台接入限制（如企业微信 IP 白名单）
4. 事后审计取证（系统操作记录）

把这四层分清，很多“安全问题”就不会再被混成一个大杂烩。

进一步阅读：

* [安全策略](security-policy.md)
* [系统日志](audit-log.md)
* [应用设置](app-setup.md)
