Skip to content

安全与审计

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

为什么正常查询也会被提示 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. 事后审计取证(系统操作记录)

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

进一步阅读:

衡石分析平台使用手册