代码之家  ›  专栏  ›  技术社区  ›  Remmus

由于ASP.NET Oracle Padding漏洞安全修补程序,Viewstate无效

  •  4
  • Remmus  · 技术社区  · 16 年前

    自从安装ASP.NET Oracle Padding vunerability的安全修补程序以来,任何保持登录到我们网站的用户在点击任何页面时都会收到错误消息。

    服务器上记录的错误如下:

    System.Web.UI.ViewStateException: Invalid viewstate. 
    Client IP: xxx.xxx.xxx.xxx
    Port: 55796
    User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9) Gecko/2008052906 Firefox/3.0
    ViewState: l4nsXEvWcOwlDpmdbxw916bpHoPiqdBP7Syb+zCQAv44xv/r3oLtETKTL28/Gts6
    Referer: 
    Path: /product/4795/fender-usa-deluxe-stratocaster-mn-olympic-white-pearl
    

    关闭自定义错误后,用户将看到以下信息

    Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster. 
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 
    
    Exception Details: System.Web.HttpException: Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.
    
    Source Error: 
    
    An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  
    
    Stack Trace: 
    
    
    [ViewStateException: Invalid viewstate. 
    Client IP: xxx.xxx.xxx.xxx
    Port: 3588
    User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; GTB6.5; .NET CLR 2.0.50727; OfficeLiveConnector.1.3; OfficeLivePatch.0.0; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
    ViewState: s0toPCu7bxkB7a3G+KTxawY3ILf1qunZyIqNBKg8xSoqY2BkWIUCJAHKFKo2RnJw
    Referer: 
    Path: /]
    
    [HttpException (0x80004005): Validation of viewstate MAC failed. If this application is hosted by a Web Farm or cluster, ensure that <machineKey> configuration specifies the same validationKey and validation algorithm. AutoGenerate cannot be used in a cluster.]
    System.Web.UI.ViewStateException.ThrowError(Exception inner, String persistedState, String errorPageMessage, Boolean macValidationError) +118
    System.Web.UI.ViewStateException.ThrowMacValidationError(Exception inner, String persistedState) +13
    System.Web.UI.ObjectStateFormatter.Deserialize(String inputString) +238
    System.Web.UI.ObjectStateFormatter.System.Web.UI.IStateFormatter.Deserialize(String serializedState) +5
    System.Web.Mvc.AntiForgeryDataSerializer.Deserialize(String serializedToken) +90
    

    解决这个问题的办法是删除所有cookie并重新登录,但显然,普通用户不知道该怎么做,我担心他们会认为我们的网站坏了。

    我能做些什么,比如强迫登录的人重新登录?

    谢谢你的帮助

    3 回复  |  直到 16 年前
        1
  •  2
  •   FlySwat    16 年前

    您可以使用global.asax(或httpmodule)中的错误句柄捕获异常,并尝试从用户计算机中删除表单身份验证cookie。

    这可能会导致事情发生。

        2
  •  0
  •   Dan Iveson    16 年前

    我说这句话的时候根本不知道瓦伦。或者补丁,但是:

    如果它发生在应用程序中,请尝试捕获导致错误页面的异常,并显示一个自定义页面,解释继续操作所需的步骤。 如果它发生在服务器上,那么(在IIS中)可能有很多设置,这些设置可能有用,也可能没有用处。

        3
  •  0
  •   eglasius    16 年前

    您所描述的内容看起来不像无效的ViewState,而是无效的身份验证Cookie。

    如果你确定这是ViewState,那么他们正在提交他们在浏览器中打开的页面/这与Cookie无关。

    推荐文章