不透明会话令牌
定义
一种对持有它的任何人都没有意义的标识符——它引用服务器端状态而不是描述它,因此客户端无法读取、修改或猜测相邻的值。
对比的是透明标识符。如果查看器通过 /view?file=/records/2026/patient-4417.pdf 来访问文档,客户端就会了解到你的目录结构、命名约定以及患者 4416 可能存在。递增整数是最古老的文档泄漏漏洞,至今仍在被利用。
不透明令牌消除了整个类别。服务器保存令牌到文档的映射;客户端持有一个无法解释的字符串。由于没有可枚举的内容,枚举变得不可能。
不透明并不意味着无害。令牌仍然授权访问其引用的内容,因此应将其视为短期凭证:不记录日志,不放入最终进入分析的 URL 中,也不在视图生命周期之外在客户端持久化。
在 Doconut
Viewer.OpenDocumentAsync() 返回一个不透明令牌,JavaScript 小部件使用它来获取页面。它不是文档标识符,绝不应被记录日志、在查看器之外在客户端缓存,或在会话之间重复使用。