对于Web应用程序中的多个用户,ViewState是否安全

时间:2012-12-26 09:15:48

标签: asp.net viewstate

在我的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以hiddenfields的形式在客户端存储数据,因此对于每个用户来说它应该是唯一的,我是对的。

3 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:1)

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

所以你会看到同一页面的不同版本(在viewstate数据的意义上),我会看到不同的版本。

答案 2 :(得分:1)

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

使用隐藏的输入字段为每个页面渲染。

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

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