api-gateway实践(03)新服务网关 - 网关请求拦截检查

参考链接: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、时段访问总量控制

三、补充说明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/258024.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

oracle存储过程关键字有哪些,ORACLESTREAMS存储过程中的一些参数有哪些?

1&#xff0c;maintain_mode参数可取golbal或transportable tablepsaces&#xff0c;当该参数取global时&#xff0c;表示streams进行全库复制&#xff0c;否则表示streams进行表空间复制&#xff0c;需要在tablespace_names参数中指定待复制的一个或多个表空间。2&#xff0c;…

正则验证多个邮箱用分号隔开

代码如下&#xff1a; <script> var str xxxx126.com;123234234qq.com;xxxxxxxxxx.con.cn; var reg /^((([a-z0-9_\.-])([\da-z\.-])\.([a-z\.]{2,6}\;))*(([a-z0-9_\.-])([\da-z\.-])\.([a-z\.]{2,6})))$/; if(reg.test(str)){ alert(1); }else{ …

转载-使用 Feed4JUnit 进行数据与代码分离的 Java 单元测试

JUnit 是被广泛应用的 Java 单元测试框架&#xff0c;但是它没有很好的提供参数化测试的支持&#xff0c;很多测试人员不得不把测试数据写在程序里或者通过其它方法实现数据与代码的分离&#xff0c;在后续的修改和维护上有诸多限制和不便。Feed4JUnit 是开源的基于 JUnit 的扩…

青岛智能院助力智慧城市 打造智能产业“黄埔军校”

作为青岛市的主干道之一&#xff0c;山东路的拥堵状况一直让人头疼。近日&#xff0c;因为一种交通组织优化方案的实施&#xff0c;山东路和延吉路的通行率提高了近50%。而研发这种智能管控系统的正是位于青岛高新区的青岛智能产业技术研究院。截止今年5月份&#xff0c;青岛智…

oracle备份归档文件,oracle 如何不备份已经备份的归档

在Oracle数据库备份归档日志时&#xff0c;通常会保存最近几天的归档日志文件不删除。如&#xff1a;backup archivelog all;delete noprompt archivelog all completed before sysdate -14; 在本地保留14天的归档日志&#xff0e;再备份时&#xff0c;归档会重复再备份一次。…

博客迁移指南

1.今天起 博客迁移至farbox 2. 新博客地址&#xff0c;http://yoon.farbox.com转载于:https://www.cnblogs.com/yoon/p/5003384.html

iOS 第三方登录 !

http://www.it165.net/pro/html/201409/21854.html 转载于:https://www.cnblogs.com/Seeulater/p/4076727.html

dp递推 hdu1978

How many ways Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 5422 Accepted Submission(s): 3185 Problem Description这是一个简单的生存游戏&#xff0c;你控制一个机器人从一个棋盘的起始点(1,1)走到棋盘的…

codeforce-600C. Make Palindrome(贪心)

http://codeforces.com/problemset/problem/600/C&#xff1b; 题意&#xff1a;给你一个小写字母组成的英文串&#xff0c;将它转换为回文串&#xff0c;要求&#xff0c;改变的字母的个数最小&#xff0c;移动字母不算改变字母。 所得的串字典序是最小的。最后输出所得到的串…

oracle触发器没有效果,触发器不起作用,各位帮忙看看什么原因?

测试数据模型如下&#xff1a;Create Table test_c (Id Number,seq Number,state varchar2(5));select a.*,rowid from test_c aInsert Into test_cValues(1011,101,00A);Insert Into test_cValues(1012,101,00A);Insert Into test_cValues(1021,102,00A);Insert Into test_cVa…

10个我最喜欢问程序员的面试问题

最近我拜读很多文章&#xff0c;都是介绍面试问题的&#xff0c;我真心不理解&#xff0c;面试官代表公司想要聘用的是最优秀的程序员&#xff0c;那就意味着需要想出一些有意义的面试问题。如果你就提一些毫无用处的垃圾问题&#xff0c;那么很容易遗漏很多能干的程序员。当然…

oracle动态性能视图和静态,oracle最重要的9个动态性能视图

v$session v$session_wait (在10g里功能被整合,凑合算1个吧.)v$processv$sqlv$sqltextv$bh (更宁愿是x$bh)v$lockv$latch_childrenv$sysstatv$system_event按组分的几组重要的性能视图1。System 的 over viewv$sysstat , v$system_event , v$parameter2。某个session 的当前情况…

glTF格式初步了解

glTF格式初步了解近期看到Qt 3D的进展。偶然了解到了一种新的格式&#xff1a;glTF格式。这样的格式据说比现有的3D格式更加符合OpenGL应用的须要。这引起了我的好奇。于是我在Qt 3D的外部链接中找到了有关glTF的相关链接。上海萌梦信息科技有限公司&#xff08;微博&#xff1…

【】局部刷新:

【】局部刷新&#xff1a; //页面加载时绑定按钮点击事件$(function(){ $("#按钮id").click(function(){ refresh(); });});//点击按钮调用的方法function refresh(){ window.location.reload();//刷新当前页面. //或者下方刷新方法 //par…

技术贴-搜狗打字

超强技术帖&#xff1a;遇到不会读的字&#xff0c;怎么用拼音打出来&#xff1f;】方法很简单&#xff0c;就是先打个“u”然后打各个部首的读音&#xff0c;就能在拼音输入法中打出来哦。比如&#xff0c;骉&#xff0c;可以输入umamama&#xff0c;输入法就会自动出现“骉”…

【第二十七章】 springboot + zipkin(brave-okhttp实现)

本文截取自&#xff1a;http://blog.csdn.net/liaokailin/article/details/52077620 一、前提 1、zipkin基本知识&#xff1a;附8 zipkin 2、启动zipkin server&#xff1a; 2.1、在官网下载服务jar&#xff0c;http://zipkin.io/pages/quickstart.html&#xff0c;之后使用命令…

Oracle 数据定义语言,oracle 数据定义语言(DDL)语法

DDL语言包括数据库对象的创建(create)、删除(drop)和修改(alter)的操作1.创建表语法create table table_name(column_name datatype [null | not null],column_name datatype [null | not null],..........[constraint])constraint 是为表中的列设置约束&#xff0c;常见的有…

Android内存泄漏问题(一)

前言 不少人认为JAVA程序&#xff0c;因为有垃圾回收机制&#xff0c;应该没有内存泄露。 其实如果我们一个程序中&#xff0c;已经不再使用某个对象&#xff0c;但是因为仍然有引用指向它&#xff0c;垃圾回收器就无法回收它&#xff0c;当然该对象占用的内存就无法被使用&…

向上弹出菜单jQuery插件

插件名&#xff1a;柯乐义英文名&#xff1a;Keleyijs文件名称&#xff1a;jquery.keleyi.js插件功能&#xff1a;该插件可以让你轻易地在页面上构建一个向上弹出的二级菜单。支持浏览器&#xff1a;keleyi 0.1.4版本支持IE6以及以上、Chrome、火狐(Firefox)、欧朋(Opera)、Saf…

oracle在线sql数据库设计,一款在线ER模型设计工具,支持MySQL、SQLServer、Oracle、Postgresql...

在线QQ客服&#xff1a;1922638专业的SQL Server、MySQL数据库同步软件介绍一个在线ER模型生成工具&#xff0c;该工具可以在线为多个数据库的DDL文件生成ER模型图&#xff0c;并支持MySQL&#xff0c;SQLServer&#xff0c;Oracle&#xff0c;PostgreSQL和其他数据库。主要功能…