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.pswp.cn/news/258024.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/258024.shtml
英文地址,請注明出處:http://en.pswp.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和其他數據庫。主要功能…