【发布时间】:2015-05-06 15:19:00
【问题描述】:
所以我正在阅读我在 /r/netsec 上找到的一篇简洁的文章:
https://paragonie.com/blog/2015/05/using-encryption-and-authentication-correctly
真正让我陷入困境的一件事是,我们可以在加密的 cookie 中翻转一点,并且实际上对包含的数据进行了有意义的更改。
确保所有流量都通过 SSL 很容易(这不是关于安全传输的问题),但这让我真正想到了消息完整性以及如何查看原始 cookie 是否已被篡改。通常,我只会将经过身份验证的用户 ID 存储在 cookie 中,并处理防火墙后面的所有其他内容。如果我可以篡改该 cookie 以从客户端更改用户 ID 怎么办?上面的文章表明这是可能的,并提供了使用 libsodium 来解决这个问题的建议。我知道这个库(我自己没有使用过),但这让我进一步陷入了我的想法,即需要一些 ASP 内置安全机制之外的东西。
关于内置的 ASP 安全性,我是否需要做一些尚未以标准方式处理 cookie 安全性的特殊操作(让 OWIN 做它的事情或使用 FormsAuthentication.Encrypt)?如果不是,如何在后台处理消息完整性?
进一步阅读使我了解了代码项目中的这个 HttpSecureCookie 类: http://www.codeproject.com/Articles/13665/HttpSecureCookie-A-Way-to-Encrypt-Cookies-with-ASP
上面表示使用机器密钥进行 cookie 防篡改,但我不清楚它究竟是如何使其防篡改的。这将如何防止恶意用户将原始文章中指出的位翻转到加密的 cookie?
【问题讨论】:
标签: asp.net security cookies encryption