ASP.NET Identity会话cookie的安全性如何?

当然cookie可能被盗并且会话被劫持,但会话cookie的加密本身(在ASP.NET身份中)有多安全?它可以用现代硬件和一点点时间来操纵吗?

我问是因为我想添加一个标识组的声明,但只有在cookie非常安全的情况下这才是安全的.否则,攻击者可以注册一个合法的帐户,然后在没有窃取密码的情况下进入其他组.

解决方法

为.NET Framework 4及更高版本更新的答案:

machineKey元素用于:

encryption,decryption,and validation of forms-authentication data
and view-state data

使用AES作为默认解密算法,最小密钥长度为128位.

它还使用HMACSHA256作为验证的默认值,即SHA001的HMAC. HMAC阻止length extension attack,这是攻击者以散列仍然有效的方式将数据附加到具有散列的值的方式.

没有已知的针对AES-128的实际攻击(不像192和256可能会受到related key attack的影响),并且SHA-256远未被打破,尽管有一个academic attack against its sister SHA-1质疑它的collision resistance.碰撞阻力并不重要在验证令牌值时,理论上它是朝着打破preimage resistance迈出的一步.因此,您可以放心使用AES-128和HMAC SHA-256进行攻击.

但是,与任何加密或散列算法一样,它将归结为密钥的安全性. AutoGenerate和IsolateApps设置没问题,但是如果您自己设置,请确保它们是由加密安全的伪随机生成器(CSPRNG)生成的,长度为128位.任何比这更少的东西意味着你可能会受到蛮力攻击(理论上)的妥协. 128位意味着即使使用世界上每台计算机对您的密钥进行分布式暴力攻击也无法在您的生命周期内完成.当然,攻击者可能会试图通过其他方式抓住你的密钥来解决这个问题.保持安全.

相关文章

项目要求通过网站上传大文件,比如视频文件,通过摸索实现了文件分片来上传,然后后台进行合并。 使用了...
安装新版本的Nginx(vim /etc/yum.repos.d/nginx.repo) [nginx-stable] name=nginx stable repo baseu...
什么是 SignalR ASP.NET Core ASP.NET Core SignalR 是一种开放源代码库,可简化将实时 web 功...
在Windows下使用Docker,我们选择Docker Desktop这个软件,非常方便。 ## Docker Desktop介绍及安装 Do...
项目开始设计的是运行在windows下,所以一开始采用的是windows服务模式来获取多媒体文件信息,后来要求...
银河麒麟高级服务器操作系统V10是针对企业级关键业务,适应虚拟化、云计算、大数据、工业互联网时代对主...