我正在测试一个Web考试,这是一个考勤提交页面。功能是,如果两个用户碰巧更新相同的学生出勤率,我们将在最新的更改时显示更改的警告。
为此,开发人员已经实现了一些逻辑,就像他们将保存我们在文本框中输入的值,这些值尚未保存在视图状态。他们将比较视图状态,当前数据和数据库数据的值并显示最新的更改
作为测试的一部分,我想知道是否存在,以便我可以修改/破解开发人员在视图状态下存储的数据。
答案 0 :(得分:0)
你不能用javascript做到这一点,你可以通过JavaScript访问隐藏字段“__ViewState”,但它都是加密的。您只能看到加密值。
即使您通过javascript更改它,服务器端也会检查数据是否被篡改。
您可以使用以下代码解密并查看viewstate。为此,必须将ViewState设置为未加密https://hackage.haskell.org/package/base-4.9.1.0/docs/Control-Monad.html#t:MonadPlus
string str = System.Text.Encoding.ASCII.GetString(Convert.FromBase64String(txtViewState.Text));
但是,由于ASP.NET中默认EnableViewStateMac
属性为true
,因此无法篡改viewstate。
More Info