当用户根据默认的表单身份验证方法登录时,服务器会创建一个包含加密数据的cookie(使用Machine Key作为加密密钥)。
这意味着如果有人找到/猜测/访问服务器的机器密钥,他将登录到Web应用程序。
我开发了一些在4台服务器上的应用程序。所以,我为machine.config中的所有服务器硬编码了相同的机器密钥,我无法使用自动生成模式。
答案 0 :(得分:19)
使用Rijndael算法对ASP.NET表单身份验证票证进行加密。 Rijndael是作为DES(数据加密标准)的替代品而创建的,它提供了无限的方式来加密数据,并且还容易受到暴力攻击。 RSA Security在90年代后期组织了一系列DES挑战,挑战团队破解DES以突出其内在的漏洞:http://en.wikipedia.org/wiki/DES_Challenges
相比之下,Rijndael(也称为高级加密标准AES)使用更长的密钥 - 256位和双重加密算法。要破解256位Rijndael密钥(例如ASP.NET机器密钥)将需要2 ^ 200次操作(大约10 ^ 60 - 10个,具有60个零),几乎不可能发生暴力破解。将其与ASP.NET票据定期更改的事实相结合,并且当解密时基本上看起来像一个随机的字母和数字字符串(因此无法确定您是否已经解密的蛮力是否正确)您可以放心将很快破解您的表单身份验证cookie。
有关Rijndael及其可能的攻击的更多信息:
http://en.wikipedia.org/wiki/Advanced_Encryption_Standard#Known_attacks
答案 1 :(得分:1)
加密的第一条规则是邮件仅与密钥一样安全。如果有人可以访问您的密钥,则没有足够的安全方法。