首页 新闻 赞助 找找看

asp.net 怎么验证回发到服务器的网页是否已被篡改

0
悬赏园豆:30 [已解决问题] 解决于 2009-01-17 09:19

我的页面中有个表单,里面很多的 TextBox 和 Lable,其中有的些TextBox 根据用户的权限被设为只读的,不充许编辑。然后我在浏览器中通过源代码把那些只读的TextBox 中的值改了。没想到竟然提交修改成功了。

我记得好象页面有个属性可以验证回发的页面的有效性,忘了是什么了。请问这样的问题该如何避免。如果页面中存在这样的Bug 实在是太恐怖了。

问题补充: ValidateRequest 好象只是验证不安全字符的。但是很多情况下并不是只有注入才会造成危害。比如我这个页面的功能是修改用户信息的。只有管理员才能修改积分。如果是普通用户就把文本框设为只读或禁用。 恶意用户只要把积分改的大一些就行了,并没有注入什么不安全的字符,虽然对程序并没有什么危害。但这同样会带来很严重的后果。 当然,这种问题可以很简单的避免。提交时可以在程序里面验证,如果不是管理员的话,积分的值不从表单里取就可以了。 但我还是想知道 提交到服务器的网页是不是和上次服务器发送给浏览器的一致。
luotong的主页 luotong | 初学一级 | 园豆:4
提问于:2009-01-07 12:49
< >
分享
最佳答案
0

对于ViewState可以打开ViewStateMac来进行验证,对于普通的表单数据,验证正确性应该是网站开发者的任务,任何一个框架都没有给出全自动化的解决

Gray Zhang | 专家六级 |园豆:17610 | 2009-01-07 23:22
其他回答(6)
0

没办法

其实实际上客户端和服务器端 就没有必然的关联

所以才会出现那么多注入bug

但是你的数据是否有效是可以自己验证的

还有一些数据本来改了页没关系

 

换句话说实际上只有能够影响程序的数据 才存在危险

一般来说如果用户不知道你的程序结构

即时能够改回传数据

也不容易影响你的程序

 

不过只要你对那些有影响的地方控制严格了 基本就没有什么问题了

小眼睛老鼠 | 园豆:2779 (老鸟四级) | 2009-01-07 12:57
0

每个回发的页面都有一个自己标识的ID去检测。

如果全是只读,可以用ViewState 判定。
winzheng | 园豆:8797 (大侠五级) | 2009-01-07 12:58
0

永远不要过分相信客户端。

5yplan | 园豆:1330 (小虾三级) | 2009-01-07 12:59
0

ValidateRequest="true" 可以在页面指令中添加 也可以在web.config中配置。

相关文章比较多

GUO Xingwang | 园豆:3885 (老鸟四级) | 2009-01-07 13:01
0

Page.ViewStateUserKey = SessionId

one click attack

不过好像在负载均衡下不行

于斯人也 | 园豆:222 (菜鸟二级) | 2009-01-07 19:14
0

ViewState 校验打开  慢就慢点 免得你担心

学者 | 园豆:205 (菜鸟二级) | 2009-01-08 08:30
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册