明确操作名称与安全属性
编码把数据映射为另一种表示,以通过受限通道传输;它不会隐藏内容或检测修改。加密解决机密性,密码学哈希支持完整性流程,MAC 证明共享密钥知识,数字签名可在信任策略下验证签名者。正确命名操作,可避免把可逆 Base64 字符串当成受保护数据。
记录转换两侧的字节。文本必须有明确字符编码,Base64 有标准和 URL 安全字母表,URL 组件具有不同分隔规则,填充要求也随协议变化。文本往返成功时,二进制载荷、规范签名输入或跨语言实现仍可能不同。
JWT 用于诊断时解码,用于信任时验签
JWT 解码器适合查看安全测试令牌中声明的算法、密钥 ID、签发方、受众、主题和时间声明。在验证器接受允许算法、使用可信密钥验证签名,并检查签发方、受众、过期、启用时间和应用策略前,每个字段都仍由攻击者控制。单纯解码绝不能授予访问。
使用持续维护的 JWT 库并进行严格配置。不要仅根据不可信的 alg 头选择验证行为,不要从攻击者提供的任意位置获取密钥,也不要接受为其他服务签发的令牌。时钟容差应明确且较小,密钥轮换测试应覆盖过渡和旧密钥退役。
让标识符与授权保持分离
UUID v4 提供较大的随机标识空间和定义明确的版本、变体位,适合作为标识符,但存储层仍应实施唯一约束。它们不是 Bearer 密钥。知道或猜到对象 ID 不能成为读取或修改对象的充分条件,仍必须检查所有权和权限。
FNV-1a 等短非密码学指纹适合哈希表、固定样例和意外变化比较。其输出较小,允许碰撞,也不提供对抗性完整性。内容完整性应使用标准密码学哈希;需要真实性时使用带密钥 MAC 或签名,并在设计中明确准确字节编码。
把密码作为凭据生成和处理
对于生成密码,长度和独立随机性是核心。目标服务可能仍有字符限制,因此应在保存前确认。把生成值直接存入密码管理器,避免在共享设备留下剪贴板历史,也不要把真实密码放进可分享工具 URL、日志、截图或支持消息。
生成器不是密码管理器、认证器或恢复系统。服务端应使用批准的密码哈希方案存储验证值,而不是可逆编码或快速通用哈希。多因素认证、速率限制、泄露筛查和恢复控制解决的是单靠密码生成无法处理的风险。
构建安全诊断样例
使用仅供测试的令牌、文档保留范围 URL、模拟标识符和一次性密码。在删除身份与权限的同时保留复现缺陷所需的结构属性。回归测试应断言字节、字母表、填充、版本位和验证结果,而不只是输出字符串看似合理。
- 编码不等于加密或验证。
- 策略验证成功前,已解码声明仍不可信。
- 标识符与授权需要独立控制。