10
回答
现在浏览器自带的WEB开发工具可以修改服务端页面的值?!如何保证安全?
科大讯飞通用文字识别100000次/天免费使用。立即申请   

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

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

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

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

谢谢各位!!

<无标签>
举报
小鹰呗
发帖于5年前 10回/1K+阅
共有10个答案 最后回答: 5年前
汗。。。改的是本地的,你刷新一次就没了。
--- 共有 1 条评论 ---
luokery的确是本地的, 但可以提交, 如果改的是ID, 服务器没有验证的话, 就会出问题了. 5年前 回复

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

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

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

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

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

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