本文约需 9 分钟阅读。
为短链接设置有效期是兼顾安全强化和无用链接自动清理的实用手段。访问过期的短链接时,不会执行重定向,而是显示过期通知页面。这一功能在限时活动、临时信息共享和需要安全保障的场景中特别有效。OWASP 的安全指南也推荐将重定向 URL 的有效期设置为必要的最短时间。
整理推荐设置有效期的典型用例。第一是限时活动。促销、推广、活动通知等仅在特定期间有效的内容链接,应设置与活动结束日一致的有效期。可以防止活动结束后访问旧的推广页面,并在过期页面引导至下次活动通知或替代内容。某电商企业为限时特卖引入 24 小时有效期短链接后,特卖结束后的咨询减少了 60%,过期页面的下次特卖预注册率达到 12%。这一案例说明,有效期不仅是访问限制,还可以作为营销漏斗的一部分发挥作用。第二是机密信息的临时共享。内部资料、合同草案、包含个人信息的文档链接应设置较短的有效期 (1 小时至 7 天),在必要期限过后自动阻断访问。第三是一次性链接的替代。当严格的一次性链接 (1 次访问后失效) 难以实现时,设置较短的有效期可以作为准一次性链接使用。
具体展示各用途的推荐有效期。SNS 帖子中的活动链接适合 7 至 30 天。SNS 帖子随时间推移从时间线消失,因此按帖子寿命设置期限较为合理。X (原 Twitter) 帖子的平均寿命约 18 分钟,Instagram 信息流帖子约 48 小时,但考虑到搜索和书签访问应留有余量。邮件通讯的链接推荐 30 至 90 天。邮件可能被收件人事后重新阅读,因此适合稍长的期限。内部资料共享推荐 1 至 7 天。相关人员阅览后应尽快阻断访问,最小化信息泄露风险。活动相关链接一般设置到活动结束日的次日。如果您想系统学习信息安全基础,推荐参阅在 Amazon 搜索信息安全管理实践书籍。
从安全角度看,密码保护与有效期的并用最为有效。共享高机密信息时,推荐密码保护 + 短有效期 (1 至 24 小时) 的组合。即使密码泄露,只要有效期已过就能阻止访问,作为双重安全层发挥作用。IPA (信息处理推进机构) 的安全白皮书也推荐临时链接共享设置有效期。这种"多层防御"的思路基于安全基本原则"Defense in Depth"。即使单一防御被突破,另一层也能阻止攻击。笔者在公司内运营 6 个月的结果显示,密码 + 有效期并用可以 100% 阻止机密链接的非法访问尝试。而仅使用密码的运营期间,发生了 2 起离职员工重复使用密码的非法访问。
有效期的自动延长和通知机制也是运营中的重要考虑事项。管理大量短链接的组织中,在过期前 72 小时通过邮件或聊天发送通知的机制很有效。笔者的团队使用 DynamoDB Streams 和 Lambda 组合实现了过期预告通知的自动化。TTL 前 3 天以记录变更为触发器启动 Lambda,向 Slack 频道发送通知。引入这一机制后,因意外过期导致的链接失效事件从月均 4.2 件减少到 0.3 件。收到通知的负责人判断是否需要延期,必要时通过 API 更新 TTL 的工作流已经建立。
过期页面的设计也是重要因素。仅显示"此链接已失效"会损害用户体验。过期页面应包含:链接已过期的明确说明、替代内容或最新信息的链接、首页导航、联系方式。活动链接的情况下,通过引导至下次活动预告或当前进行中的其他推广,可以最大限度减少流失。在过期页面设置下次活动预注册表单的案例中,过期页面访问者的 8% 至 15% 完成了预注册。HTTP 状态码的选择也很重要,过期链接返回 410 Gone (资源已永久删除) 在语义上最为准确。与 404 Not Found 的区别在于,410 明确表示"曾经存在但现在不可用",具有促使搜索引擎删除索引的效果。
技术实现方面,有效期以 TTL (Time To Live) 形式保存在数据库中。DynamoDB 的情况下,设置 TTL 属性即可自动删除过期记录。不过,DynamoDB 的 TTL 删除可能有最长 48 小时的延迟,因此应用层也需要进行有效期检查,对过期链接不执行重定向。这种双重检查机制可以不受 TTL 删除延迟影响,立即阻止对过期链接的访问。TTL 延迟的原因是 DynamoDB 通过后台进程扫描和删除过期项目,处理时间随表大小和吞吐量而变化。
缺点方面,有效期设置伴随着与便利性的权衡。期限过短可能导致合法用户无法访问。特别是在印刷品上标注的短链接设置了短有效期时,可能在印刷品分发期间链接就已失效。印刷品使用的短链接建议不设置有效期,或设置足够长的期限 (1 年以上)。此外,运营大量短链接时,需要一套管理哪个链接何时过期的机制。应整备管理台账或仪表板,建立提前通知即将过期链接的运营体制。选择支持有效期延长和变更的服务也很重要。当活动比预期延长时,能够灵活应对的服务更为实用。时区处理也需注意,应事先决定是以 UTC 管理还是以用户本地时间管理,并在团队内统一,否则会出现"链接应该还有效却已过期"的问题。
参考资源:如果您想深入学习链接管理和安全对策,推荐在 Amazon 搜索 Web 应用安全实践书籍。