【问题标题】:Is it possible to decrypt and view ViewState values?是否可以解密和查看 ViewState 值?
【发布时间】:2010-04-14 15:23:35
【问题描述】:

我知道有一些工具可以让您查看 asp.net viewstate 的内容。是否可以通过将<machineKey ... />节点添加到web.config来查看和修改viewState的内容?

【问题讨论】:

    标签: asp.net security viewstate


    【解决方案1】:

    当然。 ViewState 只是 base64 编码的(除非您指定它应该被加密)。这是写ViewState viewer的人的链接。这是Fritz Onion 的另一个。您可能无法直接修改 ViewState(即在代码之外),因为 ASP.NET 已经进行了检查以专门确保没有任何东西篡改 ViewState。有关更多信息,请参阅EnableViewStateMAC 设置。

    更新

    由于链接失效,指向各种查看器的链接不再有效。不过简单搜索“viewstate viewer”就可以找到网上的其他人如ASP.NET ViewState viewer

    【讨论】:

    • 同意,但问题是是否可以解密。假设 Abe 知道他在说什么,他说的不是 base64 encoding,而是一个 encrypted 视图状态,然后使用 base64 进行编码。问题是不,你不能解密它(这就是重点),不,你不能改变它,即使你可以,MAC(消息验证码)也会失败,服务器会拒绝
    • @Henri - 我相信 Abe 说的是他自己的网站,而不是其他人的。如果它是您自己的站点,并且您在 machineKey 元素中指定了 decryptionKey 属性,那么您可以使用与加密它相同的方法来解密 ViewState(无论它是在加密之前还是之后进行 base64 编码我不知道)因为你知道关键。如果您没有指定decryptionKey,那么它是自动生成的,我怀疑是否有办法获取该密钥。如果您禁用 enableViewStateMAC,您可以在代码之外更改 ViewState(当然,您不应该这样做)。
    • 谢谢亨利,这就是我的意思。如果您想将其发布为答案,我会接受。
    • @Abe Miessler - 你有解密密钥吗?如果是这样,那么是的,你可以解密它(你必须编写代码来做到这一点)。如果你有加密密钥,你能修改一个加密的 ViewState 吗? 如果 enableViewStateMac 关闭,那么理论上是可以的。您必须解码和解密 ViewState,更改某些内容,加密和编码数据,然后重置 ViewState 隐藏变量。
    • 链接不再有效
    【解决方案2】:

    请看这里How to decode viewstate 我提供了完整的源代码来从视图状态字符串中获取 StateBag。加密状态也可以使用相同的方法解密,但分配密钥。

    【讨论】:

      【解决方案3】:

      编辑:这是一个在线视图状态解码器的新链接,因为原来的链接不再可用。

      https://www.httpdebugger.com/Tools/ViewstateDecoder.aspx

      原文:

      我喜欢这个视图状态解码器。非常容易使用。

      删除过时的链接

      【讨论】:

      • @xkill 我刚刚检查了顶部链接,更新的链接,它工作正常。你能再检查一下吗?
      猜你喜欢
      • 1970-01-01
      • 2015-06-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-01
      相关资源
      最近更新 更多