FormsAuthentication并在加密cookie中设置userID / name,存在安全风险?

时间:2010-01-18 21:57:19

标签: asp.net security authentication cryptography cookies

Asp.net将会话存储在cookie中,因此不必担心服务器端的会话(传统上会话存储在数据库中,并且查找是通过会话ID完成的,会话ID通常是像字符串一样的Guid)

在上一个问题中,我问的是Spring应用程序如何存储/创建会话等:Spring authentication, does it use encrypted cookies?

Cletus指出,在cookie中存储用户名/ id虽然是加密的但是存在安全问题,因为潜在的黑客既有加密文本,也有黑客知道实际加密文本是什么即userId或用户名。

你对此有何看法? 我确信StackOverflow也在使用这种机制,因为** 99.9%的asp.net Web应用程序正在以这种方式使用formsauthentication。 Microsoft的MSDN站点本身充满了以下示例:

 FormsAuthentication.RedirectFromLoginPage(UsernameTextbox.Text, NotPublicCheckBox.Checked);

在上面的代码中,用户名值存储在加密的cookie中。 实际上,我记得asp.net网站被黑了,因为web.config在表单身份验证标记中没有Protection = All。 这是一个真正的问题吗? 要重复与之相关的信息: 如果你想知道什么是“婴儿床”。见:http://www.faqs.org/faqs/cryptography-faq/part03/

  

密码分析方法包括什么   被称为实用密码分析'':   敌人不必只是凝视   在你的密文直到他的数字   明文。例如,他   可能会假设'' - 延伸   可能的明文。如果婴儿床是   那么他可能是正确的   推断出密钥然后解密   其余的消息。或者他可能   利用“异构体” - 同样如此   明文加密了几个   密码系统或几个密钥。因此他   可能甚至在获得解决方案时   密码分析理论说他没有   有机会。**

1 个答案:

答案 0 :(得分:1)

也许你应该看一下这个文件:Improving Web Application Security: Threats and Countermeasures -- Threat Modeling

了解涉及哪些安全风险以及如何减轻这些威胁是一个很好的起点。