比如某个用户可以操作后台的某个权限(比如更新一个栏目下的文章),如果前台有个hidden来标记此次读取的是哪篇文章的ID,后台读取这个hidden来更新文章。这样的情况下,用户用FireBug修改了这个值(比如读取的是id为10的文章),用户在修改完文章内容后,用firebug修改了这个hidden为11然后提交,那么后台更新的文章id就是11。这是不正确的(即使用户有权限更新10和11)。这种情况有办法避免吗? |
|
5分 |
真正的逻辑应该都在服务端,比如用户只有修改10的权限,却要修改成11提交,后台就不应该把它真正执行
而有权限修改10和11的人没必要这样搞 没有权限的人搞了也白搞 |
只是突然想到了哈。 |
|
他自己出门不关闭IE,旁边有人把他网站内容都删除了也行,这跟firebug有任何关系? |
|
就算不用firebug,我也可以自己写段代码模拟登陆,模拟提交,然后我代码里写错了,结果把东西更新没了,这能怪谁?自己作死
|
|
他自己出门不关闭IE,旁边有人把他网站内容都删除了也行,这跟firebug有任何关系? |
|
33分 |
显然,想要验证,必须要把状态保存在一个地方,并且客户端无法修改。方法你都说多了,可以是服务端session,或者是传递给客户端加密后的值,客户端提交时携带。
最好是传递给客户端,因为为了防止CSRF攻击,常用方式就是需要一个这样的hidden字段,里面是加密后的一些内容,你可以自行实现,或者基于自带的IAntiForgeryAdditionalDataProvider,把当前的id也拼进去加密。 |