参考链接:http://www.cnblogs.com/jivi/archive/2013/03/10/2952829.html

一、为什么要拦截检查请求?

防止重放攻击、篡改重放,进行使用规格检查

1、请求可能是重放攻击

重放攻击的基本原理就是把以前窃听到的数据原封不动地重新发送给接收方。很多时候,网络上传输的数据是加密过的,此时窃听者无法得到数据的准确意义。但如果他知道这些数据的作用,就可以在不知道数据内容的情况下通过再次发送这些数据达到愚弄接收端的目的。

例如,有的系统会将鉴别信息进行简单加密后进行传输,这时攻击者虽然无法窃听密码,但他们却可以首先截取加密后的口令然后将其重放,从而利用这种方式进行有效的攻击。

再比如,假设网上存款系统中,一条消息表示用户支取了一笔存款,攻击者完全可以多次发送这条消息而偷窃存款。

2、请求可能是篡改重放

网上有一些工具,如:IEC、fiddler,可以拦截IE表单请求,篡改请求报文数据后再提交给服务器。

  • 实现拦截请求,篡改数据功能的方法有很多,如使用WINPCAP,直接从网卡截包然后篡改,或者HOOK住SEND函数,或者其它相关的网络API。
  • 使用WINPCAP实现这个功能,有点牛刀杀鸡了,而使用HOOK技术,又不是太安全,基本上带主动防御,智能行为分析的杀软,HOOK用到的几个函数都是被严密监控的。
  • 我们还可以采用--代理拦截技术,看到代理两个字,稍稍有点计算机知识的人,第一时间反应的词语应该都是代理服务器,是的,代理拦截技术,正是基于代理服务器技术实现的。

一般的请求发送模式:

加入代理服务器后:

使用代理服务器后,所有的HTTP请求,都是先发到代理服务器,然后由代理服务器重新包装后,再发给目标(实际)服务器,响应也是如此,

代理服务器先接收来自目标(实际)服务器的响应,然后包装后发给客户机。

所以,实现一个代理服务器,就可以拦截请求,篡改数据了。

如何实现一个代理服务器,参见:http://www.cnblogs.com/jivi/archive/2013/03/10/2952829.html

3、需要对客户请求进行使用规格限制

同时在线请求控制

时段访问总量控制

。。。

二、网关控制

1、请求防攻击,默认关闭

timestamp检查 & nonce检查

1.1、timestamp检查

1.2、nonce检查

2、请求防篡改,签名比对

为了对识别有效的客户端,我们可以对请求进行防篡改检查,具体的做法就是客户端对请求进行签名发送,服务端进行签名比对。

合法的客户端是属于某个开发者的,这个开发者申请使用某个api获得服务提供者同意后,可以通过注册中心绑定一对前端访问密钥,这对密钥包括一个key和一个secret,开发者的客户端使用secret对要发送的请求进行签名后,在请求中携带key和签名,发送请求给网关。

网关会根据请求中携带的key在注册中心找到对应的secret,重新对请求进行签名,和请求中携带的签名进行比对,一致则放行,不一致则认为这个请求是被篡改过的。

2.1、客户端签名过程

  1. 请求头中要携带签名key:x-ca-front-devclientkeyey=客戶端签名key
  2. 请求头中要指定参与签名的请求头,请区分大小写:x-ca-front-sign-headers='x-ca-front-timestamp,x-ca-front-nonce'
  3. 请求头中要携带使用签名key和签名算法计算的签名串:x-ca-front-signature=客戶端签名

以下是请求签名Sign类中定义的网关侧请求头

2.2、签名算法

  • String secret:签名密钥DevClientSecret
  • String uri:服务端用request.getUri()返回的内容, 不带参数
  • String httpMethod:POST/GET/DELETE/PUT
  • Map<String, String> headersToSign:要参与签名的头key列表,用英文逗号隔开
  • Map<String, Object> paramsMap:如果是Get,所有参数列表,如果是post,url后面跟的参数列表
  • byte[] inputStreamBytes:如果是post-bytes和put-bytes,就是body体的bytes;如果是post-form,字典序的参数列表串.getBytes()

2.3、签名例子

3、请求使用规格检查,默认关闭,如果none认证,也关闭

3.1、同时在线请求控制

3.2、时段访问总量控制

三、补充说明

api-gateway实践(03)新服务网关 - 网关请求拦截检查的更多相关文章

  1. [转载] 构建微服务:使用API Gateway

    原文: http://mp.weixin.qq.com/s?__biz=MzA5OTAyNzQ2OA==&mid=206889381&idx=1&sn=478ccb35294c ...

  2. 微服务实战(二):使用API Gateway

    微服务实战(一):微服务架构的优势与不足 微服务实战(二):使用API Gateway 微服务实战(三):深入微服务架构的进程间通信 微服务实战(四):服务发现的可行方案以及实践案例 微服务实践(五) ...

  3. 微服务实战-使用API Gateway

    当你决定将应用作为一组微服务时,需要决定应用客户端如何与微服务交互.在单体式程序中,通常只有一组冗余的或者负载均衡的服务提供点.在微服务架构中,每一个微服务暴露一组细粒度的服务提供点.在本篇文章中,我 ...

  4. 使用API Gateway

    http://dockone.io/article/482 [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用的理想选择. Do ...

  5. 微服务实战(二):使用API Gateway - DockOne.io

    原文:微服务实战(二):使用API Gateway - DockOne.io [编者的话]本系列的第一篇介绍了微服务架构模式.它讨论了采用微服务的优点和缺点,除了一些复杂的微服务,这种模式还是复杂应用 ...

  6. 谈谈微服务中的 API 网关(API Gateway)

    前言 又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了,在这里给大家抱歉. 那么,在本篇文章中,我们就一起来探 ...

  7. 微服务中的 API 网关(API Gateway)

    API 网关(API Gateway)提供高性能.高可用的 API 托管服务,帮助用户对外开放其部署在 ECS.容器服务等云产品上的应用,提供完整的 API 发布.管理.维护生命周期管理.用户只需进行 ...

  8. 服务中的 API 网关(API Gateway)

    我们知道在微服务架构风格中,一个大应用被拆分成为了多个小的服务系统提供出来,这些小的系统他们可以自成体系,也就是说这些小系统可以拥有自己的数据库,框架甚至语言等,这些小系统通常以提供 Rest Api ...

  9. API Gateway微服务

    微服务中的 API 网关(API Gateway)   前言 又是很久没写博客了,最近一段时间换了新工作,比较忙,所以没有抽出来太多的时间写给关注我的粉丝写一些干货了,就有人问我怎么最近没有更新博客了 ...

随机推荐

  1. [转]Ubuntu Linux 安装 .7z 解压和压缩文件

    [转]Ubuntu Linux 安装 .7z 解压和压缩文件 http://blog.csdn.net/zqlovlg/article/details/8033456 安装方法: sudo apt-g ...

  2. QBlog V2.5 源码开放下载(ASP.NET 番外系列之开端)

    QBlog简介: QBlog:是一个套博客系统,开源.支持多用户.多语言.及方便的多数据库切换. QBlog下载:http://www.cyqdata.com/download/article-det ...

  3. 复习ACCESS注入

    0x00前言:在学校看完了ACCESS注入.但当时并没有电脑,所以做好了笔记 回到家自己搭建了一个有ACCESS注入的站进行练习,虽然这可能没有什么用处 毕竟现在大多的网站都有waf或安全狗.而且AC ...

  4. SQL注入之Sqli-labs系列第三篇

    废话不在多说  let's go!   继续挑战第三关(Error Based- String) 1.访问地址,加入参数后 and 1=1和and 1=2进行测试,木有任何动静 2.再使用 ' 出现报 ...

  5. Spring MVC核心技术

    目录 异常处理 类型转换器 数据验证 文件上传与下载 拦截器 异常处理 Spring MVC中, 系统的DAO, Service, Controller层出现异常, 均通过throw Exceptio ...

  6. 面试:Handler 的工作原理是怎样的?

    面试场景 平时开发用到其他线程吗?都是如何处理的? 基本都用 RxJava 的线程调度切换,嗯对,就是那个 observeOn 和 subscribeOn 可以直接处理,比如网络操作,RxJava 提 ...

  7. WEB 表格测试点

    Web页面的表格测试点: 1.表格列名 2.表格翻页.表格跳转到多少页.最后一页.首页 3.表格每页显示的数据, 数据的排序 4.表格无数据 5.表格支持的最大数据量 6.表格中数据内容超长时,显示是 ...

  8. python开发装饰器的应用

    python全栈开发-Day10 装饰器(闭合函数的应用场)   一. 装饰器 装饰器就是闭包函数的一种应用场景 什么是闭包函数?我们再来回忆一下: 闭包函数: 定义在函数内部的函数,并且该函数包含对 ...

  9. React demo:express、react-redux、react-router、react-roter-redux、redux-thunk(二)

    上一篇杂七杂八说了下express部分的,现在开始进入正题. 接下去的顺序,就是项目从零开始的顺序(思路方向). [actions定义] 如图,目录页,有4部分的内容,所以以下几个actions是需要 ...

  10. 第 8 章 IO库

    第 8 章 IO库 标签: C++Primer 学习记录 IO库 第 8 章 IO库 8.1 IO类 8.2 文件输入输出 8.1 string流 8.1 IO类 IO对象无拷贝或赋值,因此不能将形参 ...