现在浏览器自带的WEB开发工具可以修改服务端页面的值?!如何保证安全?

小鹰呗 发布于 2013/09/09 22:03
阅读 1K+
收藏 1

1、创建一个表单页面,隐藏域的值为123456,提交页面直接显示隐藏域的值

2、打开浏览器工具,修改值

3、提交,结果被改变,并且服务器域名之类的都没有变

这样不是很危险吗?在服务器端做什么来源检测之类的都无用了,浏览器为什么能够提供这样的功能,另外应该如何处理,才能保证提交安全?

谢谢各位!!

加载中
0
开源中国董事会主席
开源中国董事会主席
触发submit时,验证一下数据,后端也要验证一下数据
0
Z
Zicl
汗。。。改的是本地的,你刷新一次就没了。
luokery
luokery
的确是本地的, 但可以提交, 如果改的是ID, 服务器没有验证的话, 就会出问题了.
0
傲罗
傲罗
改让他随便改,程序处理判断好就行了。
0
leo108
leo108

典型的拉不出屎怪地区没引力

不能让用户修改的数据,就不应该出现在表单中

小鹰呗
小鹰呗
回复 @leo108 : 只要值是从页面上传过去的,放到哪里都能改,跟在不在表单里没关系,后台校验是正路,你也可以看看其他人的回复
leo108
leo108
回复 @小鹰呗 : “不能让用修改的值,就不能出现在表单中”,我觉得我这句话已经说得够清楚,还不能理解我也没办法了
小鹰呗
小鹰呗
另外即便是写在JS里,也可以改,那我就不知道还有什么地方可以向后端传值了
小鹰呗
小鹰呗
老兄,你搞清楚了没有啊,我那个是隐藏域
0
迷路的游侠
迷路的游侠

后台验证呀,比如表里再加这个数据的所属用户uid,然后更新的时候就可以

where id=abcde and uid=<用户的id>,  这样的话,如果他改的是属于别人的数据,也更新不了。

小鹰呗
小鹰呗
回复 @迷路的游侠 : 谢谢,这种方式要试一下
迷路的游侠
迷路的游侠
回复 @小鹰呗 : delete from news where id=? and userId=?
小鹰呗
小鹰呗
回复 @迷路的游侠 : 比如删除、更新等操作,就都要在服务端再做校验,那查数据库吗? 比如场景:一个数据列表,每条数据都有一个删除按钮,删除时传ID到服务端,那除了后台在数据库校验该ID是否属于该用户,还有有没有比较好的方式?
迷路的游侠
迷路的游侠
回复 @小鹰呗 : 来源检测可以伪造,比如我用java的httpclient工具,就可以修改来源。一切基于客户端传送过来的数据都是不可靠的,肯定要经过服务端验证。
小鹰呗
小鹰呗
回复 @迷路的游侠 : 之前是在控制器里统一做了来源检测,并且全站用ajax采用POST提交,就避免了自己写表单提交到服务器的问题,但是现在这个浏览器提供的工具,可以直接在页面上改值,来源检测完全无用了。
下一页
0
杨同学
杨同学
你怎么可以相信浏览器呢?
小鹰呗
小鹰呗
需要外部提交数据到后端时,有什么好的方式吗? 比如一个列表,每条数据都有删除按钮
0
Narky
Narky
安全宗旨第一条:不要相信任何外部提交的数据,任何!
小鹰呗
小鹰呗
回复 @Narky : 多谢思路~
Narky
Narky
回复 @小鹰呗 : 前端逻辑和后端验证没有必然的联系。前面你可以用任何方式提交数据,但是后端的数据安全性首先要保证。如果你的后端认可了某次数据提交,说明这次提交是合法的;但具体的数据对应关系是怎么样,需要你后端的程序逻辑来保证。
小鹰呗
小鹰呗
需要外部提交数据到后端时,有什么好的方式吗? 比如一个列表,每条数据都有删除按钮
0
走位风骚闪着腰
走位风骚闪着腰
前端js验证只是糊弄一般用户,安全性当然在后端验证处理!
0
da54ng
da54ng
呵呵,服务端校验必须做,这才是安全;客户端校验基本上只是为了提升用户体验!
小鹰呗
小鹰呗
有理,呵呵~受教
0
迷途蜗牛
迷途蜗牛
客户度要做,服务器也要做。用户进入到修改密码页面,通过浏览器调试工具得知隐藏域的userid=10,假设修改为1(admin)再提交到后台会怎样?所以不单单是数据类型校验。
返回顶部
顶部