2009-05-02 102 views
2


验证票(表单认证)

Q1 - 表格认证模块将其放置在一个cookie之前加密其认证信息(票)。

现在,我很少了解加密算法,他们通常使用一些随机生成的值来加密和解密一段数据。因此,如果相同的算法使用值A来加密一些数据,那么为了能够解密这些数据,它也将需要相同的值。


A)由于几个用户可以在(经由表格认证模块),以特定的web应用程序,将认证为每个这些用户的信息被记录具有相同的随机生成值进行加密?

  • 如果是,那么这是否代表安全风险?


  • 如果没有,那么,当在下次请求Asp.Net接收认证的cookie(其中包含票)从用户,它将如何知道哪个随机生成值它用来加密票(我假设它需要将这个值来解密票)


Q2 身份验证票包含有关经过身份验证的用户的几条信息,但哪些数据实际上告诉Asp.Net(当用户再次请求某个页面时)它正在处理已经过身份验证的用户?


感谢名单

回答

5

Q1:窗体身份验证使用machineKey加密cookie中。由于它的值在machine.config中是不变的,所以ASP.NET能够解密用相同密钥加密的cookie。

Cookie使用相同的密钥进行加密,但此密钥仅为服务器所知,这意味着用户不能篡改cookie的数据,因此不能冒充其他用户,因此不存在安全风险使用相同的私钥来加密cookie。

Q2:票证包含以下信息:用户名和日期,用于确定它是否有效(如果设置了过期期限,ASP.NET可以在每次请求检查其有效性时重写Cookie) 。如果cookie由客户端发送,并且解密后仍然有效,则ASP.NET假定客户端已通过身份验证。

+1

您也可以使用自动生成的machineKey,我相信它将在应用程序启动时生成并缓存。 – sisve 2009-05-02 20:55:40

+0

thanx为您提供帮助 – SourceC 2009-05-02 23:40:15