如何验证请求的唯一性

前言

讲到请求的唯一性,是我在接口API中开发中遇到的一个问题,有一个需求就当当你的链接被捕获之后如何让它失效,当然是在别人没有破解规则之前!如果别人截取了你的请求可以进行大量请求攻击(防止重复请求攻击(RepeatAttack))而且会跑到逻辑层并不会在拦截器中拦截,我们要做的就是在拦截器避免这种情况,当然实现的方式有很多种

ps:当然是防御不了内容被篡改但是在后面的文章我会减少一种我现在在使用的一套结合起来的请求安全方面来最大可能的避免此类问题

1.浅谈各项解决方案

1.1微信

微信分为主动请求(比如一个用户向公众号发送了消息要返回什么类容,可以指向专门的自定程序)和接受请求(如微信推送,点对点推送,客服,提醒)

第一种:主动请求

主动请求微信是会有一个机制,绑定URL(服务器地址)绑定服务器地址的话,如果别人不是侵入了你的服务器或者是改变了这个地址的指向基本
很难操作的余地

第二种:接受请求

对于接受的请求来说微信并没有限定必须是摸个特定地址的请求,也就是说任何一台机器都可以请求微信,微信也需要处于安全考虑,别人捕获了
一个推送微信的请求可以不停的访问,这样就可能导致服务器资源被占用正常的用户无法使用或响应时间长(不过对于这种大公司应付这种攻击
的能力是很强的,当然对于小公司来说就不同了,资源有限的情况下最好是可以避免这种拦截请求频繁访问的攻击-攻击也就是所谓的DdoS攻击)
微信几套方式来防止这种问题
1.使用公众号的access_token获取服务器的IP地址列表
2.有效时常access_token用一些凭证获取,在所有的请求都会验证,而且会有失效时间,每天获取的access_token也是有限的
3.所有的被请求的接口都会有对于每个用户次数限制
综合以上基本上就是一个堡垒了,一必须通过服务器验证用户有效性(相当于登录),然后获取动态服务器地址,然后是请求频率限制

但是对于实现实现起来局限比较多,成本相当高也比较复杂.

1.2大众点评

大众点评是提供了一套”商家接入层接口”这套接口时提供给服务器与服务器通讯的这点和微信不同 
只有一种接受请求

大众点评并没有采用对于请求唯一性的验证,因为是服务器之间的通讯基本可以理解
但是他也使用了一些方法通讯安全的处理方法
1.appKey请求开发者作为请求加解密的参数
2.点评提供给您的开发者token

相对于微信来说点评的这个安全性也许看起来小了很多,但是这是对于服务器与服务器对接的本身内部的安全级别就比较高

2.一个简单的解决方案介绍

我推荐的这个方式比较适合,不想花太大成本,又想得到比较好的安全效果人群使用

当然请求唯一性是对于一个用户(在微信里面是appid,在点评里面是appKey)这个都是用户的唯一标示

在这个简单的解决方案中有两个比较重要的东西,随机数,时间戳,通过这两个东西加上用户唯一标示就能实现一套简单的请求唯一性验证

还是一句老话:如何实现是最后一个问题

在这里我还是采用redis键值存储,并且约定除了登录外的所有接口请求是都需带用户唯一标示,所有请求都必须有客户端生成的随机数,时间戳

2.1用户请求登录接口需要做的操作:

1.通过用户的用户名密码或者一些其他东西获取用户的唯一标示
2.把用户的唯一标示作为key随机数和时间戳作为value保存起来
3.返回用户的唯一标示

2.2验证请求唯一性时需要做的事情

1.获得用户的唯一标示
2.通过唯一标示获取上次请求的时间戳和随机数
3.验证时间戳是不是比上次请求的时间戳要晚,随机数是不是和前一次随机数相同 同时达到这两个条件时认定请求重复
4.验证通过吧这次的请求随机数和时间戳存入

以上就是基本解决思路,可以给存入的 时间戳和随机数一个过期时间这样当两次请求距离时间过久也一样会过滤掉

2.请求安全-- 如何验证请求的唯一性相关推荐

  1. php请求来源,php验证请求页面来源

    php教程验证请求页面来源 if( $_server['http_x_requested_with'] == 'xmlhttprequest' ) { echo 'ajax'; } else { ec ...

  2. python ssl连接 证书验证失败_即使在添加CA证书之后,Python也会请求SSL证书验证失败...

    我一直在使用Python Requests库来刮取网站一段时间,但该网站最近更改了SSL证书,新的证书将无法验证请求 . 根据类似问题的答案,我已将请求和urllib3更新到最新版本(2.4.3和1. ...

  3. 爬虫实战学习笔记_6 网络请求request模块:基本请求方式+设置请求头+获取cookies+模拟登陆+会话请求+验证请求+上传文件+超时异常

    1 requests requests是Python中实现HTTP请求的一种方式,requests是第三方模块,该模块在实现HTTP请求时要比urlib.urllib3模块简化很多,操作更加人性化. ...

  4. mux路由_使用大猩猩/ mux进行HTTP请求路由和验证

    mux路由 Go网络库包括http.ServeMux结构类型,该结构类型支持HTTP请求多路复用(路由):Web服务器将对带有URI的托管资源的HTTP请求(如/ sales4today)路由到代码处 ...

  5. java web 数据验证_kpvalidate开辟验证组件,通用Java Web请求服务器端数据验证组件...

    小菜利用工作之余编写了一款Java小插件,主要是用来验证Web请求的数据,是在服务器端进行验证,不是简单的浏览器端验证. 小菜编写的仅仅是一款非常初级的组件而已,但小菜为它写了详细的说明文档. 简单介 ...

  6. mysql客户端不支持_MySQL 8.0 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端...

    MySQL 8.0 - 客户端不支持服务器请求的身份验证协议; 考虑升级MySQL客户端 我是node.js和MySQL初学者,我刚开始设置并尝试一些基本代码.但是,由于某种原因,我甚至无法与服务器建 ...

  7. yapi-404-接口字段验证不通过, 错误信息:shema 验证请求参数 schema is invalid: data.properties[‘otherParams‘].required sho

    报错原因: 接口字段验证不通过, 错误信息:shema 验证请求参数 schema is invalid: data.properties['otherParams'].required should ...

  8. rxswift 网络请求_使用RxSwift将身份验证请求链接到多个服务

    rxswift 网络请求 At a company that I have worked in the past, a high-traffic online classifieds, the bac ...

  9. Python3处理HTTPS请求 SSL证书验证

    Python3处理HTTPS请求 SSL证书验证 金融类的公司网站一般都是https 开头的网站,urllib.request可以为 HTTPS 请求验证SSL证书,就像web浏览器一样,如果网站的S ...

最新文章

  1. fastjson safemode_它又又又来了,Fastjson 最新高危漏洞来袭!
  2. 亚马逊 OpenJDK 发行版 Corretto GA
  3. soapui 测试soap_使用SoapUI调用不同的安全WCF SOAP服务-基本身份验证,第一部分
  4. Linux下MySQL 安装配置
  5. 新型DDoS来袭 | 基于STUN协议的DDoS反射攻击分析
  6. 华gt2升级鸿蒙,华为手表GT2 Pro已开始内部测试,升级鸿蒙操作系统
  7. Git—基础知识及常用命令(系列一)
  8. 【报告分享】“流量重构”时代来临,2020-2021中国消费互联网竞争趋势报告-腾讯.pdf(附下载链接)...
  9. 多磁盘自动分区自动挂载脚本
  10. iOS开发之为什么更新UI都要放在主线程中
  11. 阶段3 1.Mybatis_09.Mybatis的多表操作_7 mybatis多对多准备角色表的实体类和映射配置...
  12. [转载] 民兵葛二蛋——第7集
  13. 用Python算出你的名字,比老僧算的更快!
  14. Cadence Allegro 中skill应用教程:让代码替我们打工
  15. Postgresql 配置远程访问
  16. 半次元收藏夹爬虫(残疾版,不喜勿喷)
  17. Encountered a duplicated sql alias [NAME] during auto-discovery of a native-sql query
  18. 九宫格摆法_九张照片墙怎么摆放图,1的九宫格效果图
  19. 20165219 《Java程序设计》实验二(Java开发环境的熟悉)实验报告
  20. jsp mysql电影网站_JSP+Servlet+C3P0+Mysql实现的YCU movies电影网站

热门文章

  1. oracle备份与恢复 exp,Oracle数据库备份与恢复之一:exp/imp(导出与导入装库与卸库)...
  2. 有没有一些细分IT行业,没有35岁现象
  3. 【无人机】德国初创企业利用AR障碍训练无人机操作员
  4. VM虚拟机里怎么安装ubuntu-16.04.5-desktop-amd64.iso
  5. 浅谈实现SQL Server远距离异地容灾
  6. PHP大型Web应用入门(一)
  7. 为了多拿点补贴,马斯克甚至还当过“渣男”?
  8. 上线了!游戏企业防沉迷落实情况有了举报平台
  9. 投行称在三季度所产iPhone中 iPhone 13将超过35%
  10. 苏宁易购:公司改选董事 同意聘任张近东为公司名誉董事长