【发布时间】:2011-12-21 16:06:43
【问题描述】:
背景简介:我有两步登录页面,在第一步之后将一次性代码发送到用户的电子邮件。除了第 2 步之外,我在任何地方都不需要此代码。我四处搜索并决定将原始代码存储到 Encrypted ViewState 中。所以问题是:安全吗?是否可以在客户端解密加密的视图状态并从那里获取代码? (当然,我的意思是真正加密的视图状态,而不仅仅是 base64ed)。
【问题讨论】:
背景简介:我有两步登录页面,在第一步之后将一次性代码发送到用户的电子邮件。除了第 2 步之外,我在任何地方都不需要此代码。我四处搜索并决定将原始代码存储到 Encrypted ViewState 中。所以问题是:安全吗?是否可以在客户端解密加密的视图状态并从那里获取代码? (当然,我的意思是真正加密的视图状态,而不仅仅是 base64ed)。
【问题讨论】:
据我了解,ViewState 使用 machine.config 中的 MachineKey 序列化为 base-64 编码字符串。为了让客户端(我猜是javascript)对其进行解码,您不必公开MachineKey吗?这一点都不好。
【讨论】:
ViewState 可以解码:
工具 1:View State decoder
工具 2:Http Fox
工具3:Fiddler
【讨论】:
只要有足够的时间和足够的样本集,就可以解密任何东西。 ViewState 也不完全安全。如果您有不想落入潜在攻击者手中的信息,则绝对应该将其排除在 ViewState 之外。
【讨论】:
个人不推荐。 如果您的用户在您通过电子邮件发送一次性代码之后但在他们开始使用它之前失去了互联网连接,您将如何应对?
【讨论】:
加密和解码是两个不同的东西。 Base64 解码 Base64 编码的字符串不是出于安全目的。 解密加密字符串需要密钥。
您首先编码,然后加密。
【讨论】: