【问题标题】:Is ViewState safe for multiple users in web applicationViewState 对 Web 应用程序中的多个用户是否安全
【发布时间】:2012-12-26 09:15:47
【问题描述】:

在我的 ASP.Net 应用程序中,我使用 viewstate 来存储网格的数据,我使用公共类来创建 viewstate 对象,如下所示。

public static PageViewState CurrentViewState
    {
        get
        {
            if (_app == null)
            {
                Initialize();
            }
            return _app;
        }
    }

    /// <summary>
   /// Creates new object for singleton class
    /// </summary>
    private static void Initialize()
    {
        PageViewState _viewstate = new PageViewState();
        _app = _viewstate;

    }

    /// <summary>
    /// Returns viewstate for specified page name
    /// </summary>
    /// <param name="_page">string : Name of the page</param>
    /// <returns></returns>
    public object this[string _page]
    {
        get
        {
            if (ViewState[_page] != null)
                return ViewState[_page];
            else
                return null;
        }
        set
        {
            ViewState[_page] = value;
        }
    }

我使用的是静态属性,当多个用户在 aspx.cs 中访问它时是否安全。

Datatable _dtable = (Datatable)PageViewState.CurrentViewState["MyPage"];

ViewState 以隐藏字段的形式将数据存储在客户端,因此对于每个用户来说它应该是唯一的,我说得对吗?

【问题讨论】:

  • 确实如此。阅读 MSDN 文章 - Understanding the ASP.NET ViewState
  • @AVD 我可以继续上面的代码吗?
  • PageViewState 有什么作用?试试HttpContext.Current.ViewState 属性。不要使用 ViewState 来保存大量数据(尤其是 DataTable 对象)。你应该考虑Session

标签: asp.net viewstate


【解决方案1】:

ViewState 将数据存储在客户端,这是安全的。

【讨论】:

    【解决方案2】:

    是的,因为它在客户端存储数据,即用户正在他的机器上查看的页面。

    因此,您将看到同一页面的不同版本(在视图状态数据的意义上),而我将看到不同的版本。

    【讨论】:

      【解决方案3】:

      ViewState 是表示控件状态的加密字符串,处于页面级别。

      这是为每个带有隐藏输入字段的页面呈现的。

       <input type="hidden" id="__ViewState" value="uxudhk.." />
      

      不同用户请求的每个页面在页面中都有不同的隐藏字段。所以这总是安全的。如果您的 ViewState 被修改或更改,您将收到像 InValid ViewState 这样的服务器端错误。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-06-11
        • 1970-01-01
        • 2015-06-03
        • 1970-01-01
        • 1970-01-01
        • 2017-02-03
        相关资源
        最近更新 更多