安全与审计
这类问题常常混在一起:有的是安全策略主动拦截,有的是外部平台白名单没配,有的是数据导出管控,还有的是事后审计追踪。如果不先分层,经常会误判成“系统坏了”。
为什么正常查询也会被提示 SQL 注入拦截?
先不要默认是误杀。
如果你们启用了相关安全拦截策略,而请求体里又包含了容易触发风控判断的内容,就可能被判定为 SQL 注入风险。
针对这类已知场景,客户服务案例里的处理方式是在 conf/hengshi-sense-env.sh 中启用:
export ENABLE_BODY_ENCODE=true这个配置的目的,是降低请求体内容直接触发拦截的概率。
如果你们现场遇到的是“某些查询参数一带特殊内容就被拦截”,优先检查这里,而不是先去改业务 SQL。
什么时候该优先怀疑是“安全策略拦截”,不是功能故障?
高频信号包括:
- 同一功能只有带特定参数或特定内容时失败
- 换一组值就正常
- 页面提示更像拦截、拒绝或风控,而不是普通查询报错
- 代理、网关、安全设备侧也有对应拦截痕迹
这类问题的关键,不是盲目重试,而是先确认拦截发生在应用本身、代理层,还是外围安全设备。
不想让用户随便把数据导走,应该先用什么能力?
先看安全策略里的导出控制,不要先靠流程约束。
系统支持:
- 全局控制是否允许导出数据
- 细化哪些用户可导出、哪些用户不可导出
- 配置导出行数限制
这套能力适合“允许看,但不允许大规模导出”的场景。
导出行数限制到底是干什么的?
它不是为了提升导出性能,而是为了控制数据外泄规模。
典型场景是:
- 允许用户导出少量示例数据核对
- 但不允许一次性导出大量明细
如果客户问“为什么不能全量导出”,先确认这是不是平台安全策略主动限制,而不是产品坏了。
水印保护能覆盖哪些场景?
水印不仅影响页面显示,也能覆盖导出产物。
开启后:
- 系统页面可显示水印
- 导出的 PDF / PPT / PNG 也会带水印
这类能力适合对外分享、领导汇报、外部协作等需要降低截图转发和二次传播风险的场景。
为什么应用里关不掉水印?
先看是不是系统级全局设置没给下放权限。
水印遵循“全局优先”:
- 如果系统全局没开,应用侧不能单独开
- 如果系统全局开了,但没启用“允许应用单独关闭水印”,应用管理员也不能自己关
所以这不是应用 owner 权限不够,而是平台是否允许把控制权下放。
公开链接里的过滤条件为什么还要做 HMAC 保护?
因为如果过滤条件能被随意篡改,别人就可能借公开链接试探并查询不该看的数据。
HMAC 签名保护的本质,是确保公开链接里的过滤条件不能被别人直接改值后继续使用。
如果你们要把公开链接发给外部用户,且链接里带了过滤条件,这项能力就非常关键。
企业微信里打开嵌入页面出现 Writable Error Page,为什么看起来像系统坏了?
这类情况很多时候不是 HENGSHI 页面本身坏了,而是企业微信侧白名单没配。
客户服务案例里的处理方式是:在企业微信管理后台配置 IP 白名单,填入 HENGSHI SENSE 服务器公网 IP。
所以遇到这类问题时,不要只盯应用前端,要同步检查第三方平台接入限制。
如果事后要追谁导出了数据、导出了多少,去哪里看?
看系统操作记录 / 审计日志。
系统管理员可以按:
- 时间
- 操作者
- IP
- 行为
- 结果
- 类别
等维度筛选记录。
如果要专门审计数据导出行为,可以过滤“导出数据”,查看是谁、什么时候、对哪个对象导出了多少数据。
安全与审计问题排障时,第一优先该区分什么?
先区分是下面哪一层:
- 平台自身安全策略(导出限制、水印、HMAC 等)
- 平台请求体或查询内容触发的安全拦截
- 第三方平台接入限制(如企业微信 IP 白名单)
- 事后审计取证(系统操作记录)
把这四层分清,很多“安全问题”就不会再被混成一个大杂烩。
进一步阅读: