故事的开始,面试官问了我一个问题:

如何防止http请求中数据被篡改?

回答:

1.设置客户端IP黑/白名单

1.1.客户端所有请求,请求到代理服务器(nginx),代理服务器维护黑/白名单的ip,决定是否转发请求。

1.2.项目创建一个filter,拦截所有请求,在filter的方法中,通过request信息匹配ip黑/白名单,和url的拦截规则,决定是否合法。

优点:简单粗暴。

缺点:需要客户端的IP固定。

应用场景:并发量小的场景。比如系统的后台管理服务,客服需要人工审批和通过涉及到钱财的业务,就可以使用这种简单粗暴的方式,防止账号泄露,接口泄露等等。

2.请求参数Sign签名

2.1前端发起http请求,对参数排序,然后使用 参数与私钥拼接,在进行md5加密 等方式,生成一个签名出来,一起发给服务端,服务端这边获取到参数,签名,再使用自己的私钥进行同样方式的加密生成签名,比对签名是否一致。一致则认为合法,不一致则不合法。但是无法防止重复请求攻击!

2.2针对上面方法升级,可以缓存每次请求的md5值,或者给每个请求添加uuid+随机数这样一个代表请求序号的标识。然后请求到服务端时,服务端想办法缓存起来起来这个标识,每次请求过来时,判断是否已经请求过。但是缓存怎么实现,如何维护?而且并发量高的话,每个请求过来都先查缓存,是否影响性能。

2.3在请求的参数中和签名结果里,加入时间戳这个参数,业务服务器一方面比较签名结果,一方面根据时间戳,来认证请求的合法性,比如允许请求的时间戳与服务器当前时间,存在20秒的误差等自定义规则。超过20秒的合法请求,服务器也不处理,防止恶意的重复请求。

2.4时间戳+md51 时间差120s以上代表重复请求,md5写缓存,缓存时长120s(大于等于上面的值就行),判断如果有md5代表重复请求。

3.请求方式换成Https

post 防篡改_如何防止http请求数据被篡改相关推荐

  1. 区块如何防篡改_深入浅出:一条数据是如何完成上链的

    一笔业务数据在区块链处理的流程大致分为三个阶段:分别是上链前处理阶段.链上处理阶段和智能合约处理阶段. 一.上链前处理阶段 业务数据上链前需要将业务数据处理,并且对信息进行签名.这些过程可以通过对应的 ...

  2. java在线支付---05_在线支付_编写用于准备请求数据的Servlet

    05_在线支付_编写用于准备请求数据的Servlet 创梦综合技术qq交流群:CreDream:251572072 ------------------------------------------ ...

  3. 区块如何防篡改_一种区块链防篡改技术的优化方法与流程

    本发明涉及区块链技术领域,具体涉及一种区块链防篡改技术的优化方法. 背景技术: 区块链是比特币等数字虚拟货币的底层技术,通过去中心化的数据记录,由全网所有的节点共同维护数据,实现安全地存储数据,具有不 ...

  4. 区块如何防篡改_如何实现基于区块链技术的信息防篡改与溯源

    实现对应关键信息系统基础设施的区块链存储与溯源方案,能对在数据共享过程中的关键系统基础设施的关键数据进行基于区块链的存证.传输.对于恶意篡改的关键数据能及时发现,对于虚假数据和非法篡改恶意数据能在使用 ...

  5. 区块如何防篡改_区块链数据不可篡改的详细解释

    区块链数据不可篡改的详细解释 背景介绍 本人新人一枚,学习区块链的过程中,在网上看到了很多讨论区块链区块数据不可篡改的文章,以比特币为例哈,主要存在2种解释: 解释1:由于哈希指针的存在,假设存在某节 ...

  6. java 防篡改_用JAVA二十分钟撸一个简易图片防篡改

    看到有个毕设是搞图片防篡改的,就自己撸了一个简易图片防止篡改. 原理 将图片字节生成字符串使用摘要算法加密,将加密生成的字节写到图片最后.验证时,首先读取末尾的加密字节,读取完成以后删除,再通过摘要算 ...

  7. 区块如何防篡改_为什么区块链能防伪防篡改

    区块链是分布式数据存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.区块链(Blockchain),是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一 ...

  8. 区块如何防篡改_浅谈大数据防篡改机制与区块链防篡改技术

    大数据的传统的防篡改机制 一般的防篡改机制是基于加密算法的.选择密文安全(chosen ciphertext security,即CCA-security)是公钥密码中很强的安全性概念,这个概念对存在 ...

  9. 区块如何防篡改_区块链是如何防篡改的?

    我们可以结合比特币来看看区块链是不是真的"防篡改". 一开始可能有人想,是不是可以通过技术手段修改我钱包里的比特币,但比特币的的安全性是由三个维度来保证的: 第一个维度,分布式账本 ...

最新文章

  1. 麦肯锡:优秀数据科学家的5个特征!
  2. vlookup反向查询_【Excel 函数】Vlookup 正反向查询
  3. 【操作系统】Classical Problems of Synchronization-信号量机制
  4. 【机器学习】怎样将Embedding融入传统机器学习框架?
  5. python按日期排序_你如何在python中获得按创建日期排序的目录列表?
  6. C#LeetCode刷题之#811-子域名访问计数​​​​​​​(Subdomain Visit Count)
  7. Jsp页面用javascript加 滑动验证条
  8. android 屏幕旋转流程,android自动屏幕旋转流程分析.doc
  9. 编译Android源码:Exception in thread main java.lang.UnsupportedClassVersionError:报错解决
  10. 某酷kux文件转mp4方法
  11. 大数据应用的发展趋势
  12. python爬大学生就业信息报告_Python语言爬虫——Python 岗位分析报告
  13. windows系统用cmd命令开启WiFi共享功能
  14. vscode 自定义字体样式_vscode md样式自定义
  15. 计算机蜂鸣无法开机,计算机开机后会时常出现3声蜂鸣是什么原因
  16. storm throw 口袋妖怪_~~~~~~SOS!SOS!SSSSSSSOS!!!~~~那位大侠能给贴一个全招式的英文对...
  17. TabIndex的问题
  18. EK1100和EK1110简介
  19. 汇编:怎么判断一个数是立即数
  20. 50个很棒的免费工具和资源,总有一款适合您!

热门文章

  1. P4643 [国家集训队]阿狸和桃子的游戏
  2. 有道获取单词读音api
  3. CRMEB单商户标准版上线了!
  4. DEDECMS织梦后台更新网站栏目无反应一键更新无响应的解决方法
  5. C# 使用DirectX中的Device类实现3D渲染
  6. 计算机学院开学发言,开学典礼 | 计控学院研究生代表发言稿
  7. ati自定义分辨率_修改三国无双 游戏自定义分辨率教学 6/19更新
  8. office2020与2016版的不同_Office2016与Office2019,这两个版本有些什么区别
  9. 小区市话配套和宽带接入系统研究报告
  10. reactos操作系统实现 2