springboot项目中,如何避免http请求表单数据被篡改

有过爬虫经验的朋友,一定有通过F12抓到过http请求,然后通过修改param或者body表单数据,来获取想要数据的经历,例如爬取京东的评论,url里面包含分页的入参,只需要修改分页入参的数据,例如?page=100,即可把第100页的评论抓取出来。那么如何避免请求修改url或者修改body内容呢,只要请求修改了url或者body就会被后台认证为非法请求从而过滤掉呢。

我们这个帖子就是在讨论这个问题,记住是一个request不允许修改参数的情况,如果通过postman构造一模一样的请求,包括header,url,body等。那么请求是可以发过来的。

可以有人会问为什么要避免request param被修改的情况呢,你品,你细品。如果现在有个请求提供找回密码功能,body内容附带的用户名和邮件地址。然后攻击者抓到请求内容后,修改了body内容,用户名是正常的,邮件改成了自己的私人邮箱,是不是攻击者就获取了这个用户的密码(密码发给指定的邮箱)。

现在讲一下引入一个机制,避免请求被修改入参,只要修改了入参就认为请求无效。

前端发送 请求时添加一个header,就叫_sign吧,_sign=MD5(urlParam+bodyParam+{key})。

后端解析请求时,计算sign1,sign1=MD5(urlParam+bodyParam+{key}),如果header的_sign=sign1,那么这个请求就认为是有效的,不等的话,请求无效,一定是有人修改了urlParam+bodyParam+{key}的内容。

urlParam就是请求里面?后的内容,bodyParam就是body提交的内容,key是前端和后端约定的一个秘钥,key的作用是防止攻击者猜到了加密方法(这里的加密MD5可以用其他加密替换),拿到了urlParam,bodyParam(这个肯定是会被拿到了),他不知道秘钥还是不行,这个key是无论如何不会通过F12被抓到了,这个东西可能是一个随机字符串,在内存中的。只参与header计算,而不会被请求发送。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值