如何在Web应用程序中处理视图状态数据?

问题描述:

我正在测试一个Web应用程序,这是一个出席提交页面。其功能是,如果两个用户碰巧更新了相同的学生出勤率,我们将显示最新变化的警告。如何在Web应用程序中处理视图状态数据?

对于这个开发人员已经实现了一些逻辑,他们将保存我们在文本框中输入的值,这些值尚未保存在视图状态中。他们将比较视图状态,当前数据和数据库数据的值,并显示最新更改。

作为测试的一部分,我想知道有无论如何,我可以修改/破解开发人员在视图状态下存储的数据。

你不能这样做使用JavaScript,你可以通过JavaScript访问隐藏字段“__ViewState”,但它都是加密的。您只能看到加密的值。

即使您通过javascript更改它,服务器端也会检查数据是否被篡改。

您可以使用下面的代码解密并查看viewstate。对于这项工作的ViewState中必须设置为不加密More Info

string str = System.Text.Encoding.ASCII.GetString(Convert.FromBase64Strin‌​g(txtViewState.Text)‌​); 

但篡改视图状态是不太可能的,因为EnableViewStateMac财产在ASP.NET More Info

+0

true默认情况下这意味着我没有选项抓住这个数据的权利 – Tester

+0

你将能够解密和查看数据[更多信息](http://stackoverflow.com/questions/2638671/is-it-possible-to-decrypt-and-view-viewstate-values) 。但是如果服务器端设置更紧张,篡改不太可能。 [更多信息](http://stackoverflow.com/questions/5728106/how-to-detect-viewstate-is-tamper-or-not-programatically)将它标记为已回答,如果这回答你的问题 –