有过爬虫经验的朋友,一定有通过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请求表单数据被篡改相关推荐

  1. springboot项目中接口防止恶意请求多次,重复请求的解决办法,适合小白

    在项目中,接口的暴露在外面,很多人就会恶意多次快速请求,那我们开发的接口和服务器在这样的频率下的话,服务器和数据库很快会奔溃的,那我们该怎么防止接口防刷呢?由于博主小白,很多都不懂,都是从网上一点一点 ...

  2. java抢购防止多次请求_springboot项目中接口防止恶意请求多次

    springboot项目中接口防止恶意请求多次 在项目中,接口的暴露在外面,很多人就会恶意多次快速请求,那我们开发的接口和服务器在这样的频率下的话,服务器和数据库很快会奔溃的,那我们该怎么防止接口防刷 ...

  3. SpringBoot项目中使用set方法后,自动保存问题

    问题: 在springboot项目中,例如:meal表存放套餐,里面有id和name两个字段,数据有id:1 name:A套餐 id:2 name:B套餐.person表中存放人,里面有两个字段,na ...

  4. SpringBoot12 QueryDSL01之QueryDSL介绍、springBoot项目中集成QueryDSL、利用QueryDSL实现单表RUD、新增类初始化逻辑...

    1 QueryDSL介绍 1.1 背景 QueryDSL的诞生解决了HQL查询类型安全方面的缺陷:HQL查询的扩展需要用字符串拼接的方式进行,这往往会导致代码的阅读困难:通过字符串对域类型和属性的不安 ...

  5. SpringBoot项目中遇到的BUG

    1.启动项目的时候报错 1.Error starting ApplicationContext. To display the auto-configuration report re-run you ...

  6. 基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率

    基于springboot项目中使用docker-compose+es+kibana+logstash+mysql 提高数据查询效率 1.拉取logstash,kibana,es,mysql镜像 #命令 ...

  7. 使用IDEA在SpringBoot项目中连接数据库

    使用IDEA在SpringBoot项目中连接数据库 文章目录 使用IDEA在SpringBoot项目中连接数据库 前言 连接数据库 正常操作数据库 移除数据库连接 前言 每次我在 IDEA 中用 Sp ...

  8. springboot项目中使用shiro 自定义过滤器和token的方式___shiro使用token登录流程

    springboot项目中使用shiro 自定义过滤器和token的方式 实现步骤主要是以下几步: 1. 在项目中导入maven依赖 <dependency><groupId> ...

  9. springboot项目中mybatis实现数据的基本查询

    SpringBoot项目中mybatis实现数据的基本查询 本章内容概述: mapper 查询 xml 文件基本使用 通过 mybatis 实现一条数据的查询 1 用户数据表 2 用户信息对应的实体类 ...

最新文章

  1. 国内能打自动驾驶出租车了!行驶平稳还免费,首个量产车型开放道路试运营...
  2. 为什么dw预览不了php文件,dreamweaver为什么添加不了预览浏览器
  3. 划分VLAN将生成树协议中的阻塞端口设置为转发端口
  4. jenkins没安装git报错
  5. c++变量的作用域、生存期和可见性
  6. 第十七期:详解大数据处理中的Lambda架构和Kappa架构
  7. laravel的安装
  8. python黑白图片上色_百度AI攻略:黑白图像上色
  9. 面向生态合作伙伴的实践分享回顾
  10. 【自己看的笔记】Unity基础操作认识
  11. win 10 mysql8.0安装
  12. java 堆栈大小设置_如何增加Java堆栈大小?
  13. c语言出现错误c1083,DES 算法,出现异常:fatal error C1083: Cannot open include file: 'des_encode.h'...
  14. 世界上最伟大的推销员
  15. (转载)如何跟踪一个报错消息
  16. Zigbee 入网过程详解
  17. Vista桌面图标无法拖动
  18. 通过php执行mysql语句进行学生成绩表的增删改查
  19. 老笔记本电脑机械500GB升级固态1T
  20. 花点时间顺顺Git(上)

热门文章

  1. 【笔记】在 Windows 中制作 Ubuntu 系统的USB启动盘
  2. FeignClient调用 Cannot deserialize instance of `java.lang.Boolean` out of START_OBJECT token to
  3. Matlab TRL校准(简易版)
  4. jwt生成token与解析token
  5. chrome审查元素功能
  6. PAP认证和CHAP认证原理解析
  7. Enable tracemalloc to get the object allocation traceback 错误
  8. jQuery动画+ajax
  9. Linux 内核软死锁(soft lockup)记录
  10. Python文件处理os模块介绍 -*- Python基础知识12 -*-