在会话中存储OTP是否安全?

时间:2009-10-26 09:54:40

标签: c# asp.net security session

我正在编写一个Web应用程序,并且对于某些操作,用户需要输入一次性密码(OTP) - 类似于大多数银行网站。

所以我基本上需要生成一个随机字符串,将其存储在某个地方,然后将其发送给用户,然后根据我存储的引脚验证输入的引脚。

将此生成的字符串存储在ASP Session对象中是否安全?

3 个答案:

答案 0 :(得分:4)

不要存储PIN码。哈希(SHA算法之一,最好带有一些盐)并存储哈希值。然后将用户输入内容的哈希值与您存储的哈希值进行比较。然后,如果您的存储(无论是在会话对象,某个数据库中还是其他任何对象)受到攻击,攻击者都无法了解PIN是什么。

答案 1 :(得分:1)

请注意,任何内存中的会话数据都不能转移到Web场中的其他Web服务器,因此如果此站点需要扩展,那么您可能希望将OTP从Web服务器上移除。除非你当然使用粘性会话。

答案 2 :(得分:0)

会话是客户端无法访问的服务器端集合(而不是cookie / viewstate)。它应该不受客户操纵。

但是,我认为你应该将这些OTP存储在数据库中并与之进行比较。