关于避免审查元素时,修改数据和提交数据,造成恶意审查修改的方法总结

来源:互联网 发布:罗生门电影简介知乎 编辑:程序博客网 时间:2024/06/07 19:19


作为一名程序员或者用户,都知道在浏览器审查元素时,是可以修改数据的,如果修改数据,在提交就会造成不可预想的后果,特别是在数据安全的领域。一般查询数据都会返回记录的id,和一些关键的信息,虽然这些信息不是显然地在前端显示出来,但是一般会隐藏在input框或者一个data-的属性中,在修改,删除记录时,把id以get或者post的形式将数据传递给服务端,诺任意修改了id的值,就会恶意误删数据(可能是别人的数据也可能是自己的数据),所以必须要进行有效的避免。

本人总结两个方法,通过多层验证,防止恶意修改数据提交。

(1)对于返回来的数据,比如删除,有一个链接http://host/delete?id=2&states=1,如果用户恶意修改id的值,改为3,然而我们没有做任何的处理,直接讲述get过去,发生的后果就是会删除一条不该删除的数据,造成一个很严重的后果。但是如果是正常点击删除的话,是不会有什么问题的。所以我们必须要避免这种情况

解决方法:在返回数据时,将关联的数据MD5加密,作为一个密钥key值返回,在服务端生成一个key=md5($id.$states),同时将key值也返回。则链接变成http://host/delete?id=2&states=1&key=es...rf。所以将数据传递过去的时候,会把值传过去的。在后端再比较key的值。

if(md5($id.$states)===$key){    do something}else{  die('错误');}
(2)返回来的数据如果通过ajax提交,则可以在前端判断一次,在服务端在判断一次,因为高手是可以绕开前端的js的。同样是要在后端将关联的数据创建成一个密钥,同时在前端判断时,需要引入一个MD5.js的文件,用于前端MD5函数
$('button.btn-video-loadmore').on('click',function(){var page=$(this).attr('data-page');var type=$(this).attr('data-type');var key=$(this).attr('data-key');if(<span style="color:#FF0000;">hex_md5(page+type)==key</span>){var data={'page':page,'type':type};$.post('__CONTROLLER__');}else{alert('加载失败!');}});
同时在服务端也得向方法一一样进行验证。

2 0
原创粉丝点击