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计算,而不会被请求发送。
springboot项目中,如何避免http请求表单数据被篡改相关推荐
- springboot项目中接口防止恶意请求多次,重复请求的解决办法,适合小白
在项目中,接口的暴露在外面,很多人就会恶意多次快速请求,那我们开发的接口和服务器在这样的频率下的话,服务器和数据库很快会奔溃的,那我们该怎么防止接口防刷呢?由于博主小白,很多都不懂,都是从网上一点一点 ...
- java抢购防止多次请求_springboot项目中接口防止恶意请求多次
springboot项目中接口防止恶意请求多次 在项目中,接口的暴露在外面,很多人就会恶意多次快速请求,那我们开发的接口和服务器在这样的频率下的话,服务器和数据库很快会奔溃的,那我们该怎么防止接口防刷 ...
- SpringBoot项目中使用set方法后,自动保存问题
问题: 在springboot项目中,例如:meal表存放套餐,里面有id和name两个字段,数据有id:1 name:A套餐 id:2 name:B套餐.person表中存放人,里面有两个字段,na ...
- SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL、利用QueryDSL实现单表RUD、新增类初始化逻辑...
1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...
- SpringBoot项目中遇到的BUG
1.启动项目的时候报错 1.Error starting ApplicationContext. To display the auto-configuration report re-run you ...
- 基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率
基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率 1.拉取logstash,kibana,es,mysql镜像 #命令 ...
- 使用IDEA在SpringBoot项目中连接数据库
使用IDEA在SpringBoot项目中连接数据库 文章目录 使用IDEA在SpringBoot项目中连接数据库 前言 连接数据库 正常操作数据库 移除数据库连接 前言 每次我在 IDEA 中用 Sp ...
- springboot项目中使用shiro 自定义过滤器和token的方式___shiro使用token登录流程
springboot项目中使用shiro 自定义过滤器和token的方式 实现步骤主要是以下几步: 1. 在项目中导入maven依赖 <dependency><groupId> ...
- springboot项目中mybatis实现数据的基本查询
SpringBoot项目中mybatis实现数据的基本查询 本章内容概述: mapper 查询 xml 文件基本使用 通过 mybatis 实现一条数据的查询 1 用户数据表 2 用户信息对应的实体类 ...
最新文章
- 国内能打自动驾驶出租车了!行驶平稳还免费,首个量产车型开放道路试运营...
- 为什么dw预览不了php文件,dreamweaver为什么添加不了预览浏览器
- 划分VLAN将生成树协议中的阻塞端口设置为转发端口
- jenkins没安装git报错
- c++变量的作用域、生存期和可见性
- 第十七期:详解大数据处理中的Lambda架构和Kappa架构
- laravel的安装
- python黑白图片上色_百度AI攻略:黑白图像上色
- 面向生态合作伙伴的实践分享回顾
- 【自己看的笔记】Unity基础操作认识
- win 10 mysql8.0安装
- java 堆栈大小设置_如何增加Java堆栈大小?
- c语言出现错误c1083,DES 算法,出现异常:fatal error C1083: Cannot open include file: 'des_encode.h'...
- 世界上最伟大的推销员
- (转载)如何跟踪一个报错消息
- Zigbee 入网过程详解
- Vista桌面图标无法拖动
- 通过php执行mysql语句进行学生成绩表的增删改查
- 老笔记本电脑机械500GB升级固态1T
- 花点时间顺顺Git(上)
热门文章
- 【笔记】在 Windows 中制作 Ubuntu 系统的USB启动盘
- FeignClient调用 Cannot deserialize instance of `java.lang.Boolean` out of START_OBJECT token to
- Matlab TRL校准(简易版)
- jwt生成token与解析token
- chrome审查元素功能
- PAP认证和CHAP认证原理解析
- Enable tracemalloc to get the object allocation traceback 错误
- jQuery动画+ajax
- Linux 内核软死锁(soft lockup)记录
- Python文件处理os模块介绍 -*- Python基础知识12 -*-