開放式API介面的安全處理

1. 開放API介面安全問題介紹

未進行安全處理的開放API介面存在的問題,我們可通過如下三種場景得到大致的了解和認識:

1.1 場景一

A公司開發的開放API未對介面進行安全控制,有黑客通過爬蟲程序調用開放API查詢客戶信息的介面,由於沒有安全驗證,A公司的客戶數據通過客戶信息查詢API流出,競爭公司擁有了這批客戶數據,對A公司造成損失。

1.2 場景二

A公司開發的開放API未對介面進行防篡改控制,有客戶購買價值1萬元的產品,現有黑客通過技術手段,對客戶提交的表單進行篡改,將1萬元的價格改成100元,對公司造成了經濟損失。

1.3 場景三

A公司開發的開放API未進行介面安全控制,有黑客截取了客戶的用戶名,密碼信息。黑客用客戶的用戶名,密碼登錄,查閱客戶的相關隱私信息,盜刷了客戶的信用卡,給客戶造成了損失。

這三種場景對公司以及客戶造成損失的原因都是因為A公司的開放API未對數據和用戶信息進行安全驗證,這三種場景也正反映了普遍開放式API存在以下三種安全問題:

一、 用戶密碼被截取

二、 表單數據易被篡改

三、 業務數據易泄露

2. 開放API介面安全問題解決方案

針對開放API平台存在的上述安全問題,我們分別可以使用非對稱加密,MD5摘要,以及令牌機制進行預防和阻擊。

2.1 非對稱加密

2.1.1 什麼是非對稱加密

非對稱加密是一種加密演算法, 區別於只有一個密鑰文件的對稱加密演算法,非對稱加密有兩個密鑰,一個公鑰,一個私鑰。公鑰公開,私鑰保密,即使報文或者公鑰被截取由於黑客不掌握私鑰,也不會造成任何影響。

我們為了解決用戶敏感信息被盜用的安全問題,使用了RSA非對稱加密技術,該加密技術公佈於1978年,由創始人Ron Rivest,Adi Shamir,Leonard Adleman一起提出,並以他們三人的姓氏開頭字母命名。

RSA是目前最具有影響力的加密演算法,它被推薦為加密數據的標準,因為RSA能夠抵禦目前已知的大多數密碼攻擊。

2.1.2 非對稱加密的加密與解密流程

開放API平台生成公鑰和私鑰,並將公鑰對外公布,提供給需要對接API的人員。對接API的人員將用戶的數據使用公鑰進行加密傳輸,即使有黑客使用抓包工具截取到了報文,但是由於解密用戶數據只能使用API平台自己擁有的私鑰才能解密,所以即使報文數據泄露,由於沒有鑰匙能打開傳輸的信息,黑客獲得了報文也無可奈何,非對稱加密解決了,用戶傳輸用戶名,密碼等敏感信息泄露的問題。其流程圖如圖1所示。

圖1 RSA加密解密流程圖

2.1.3 RSA與HTTPS的對比

如果條件允許,建議設計開放api介面都使用HTTPS協議進行數據傳輸。使用HTTPS傳輸相比與RSA加密更安全 。HTTPS顧名思義,即安全的HTTP,HTTPS的主要作用是,確認雙方的身份,和建立安全通道,保證傳輸數據的安全。HTTPS既用到了非對稱加密,也用到對稱加密。相較RSA加密 ,RSA加密實現的,HTTPS都能實現。但是HTTPS存在,維護成本高,伺服器開銷大,需要購買證書,性能相對低的問題,所以基於成本的考慮不能使用HTTPS的,使用RSA加密演算法是最優的選擇。

2.2 MD5摘要

2.2.1 什麼是MD5

MD5的全稱Message-Digest Algorithm 5(信息摘要演算法5),它的作用是對一段任意的字元串信息生成信息摘要(Message-Digest)。因為其演算法的不可逆的特點,MD5 一般用來儲存用戶登陸的密碼,或者對比信息是否一致。MD5目前並不能被真正意義上破解,所謂的破解只是通過數據量很大的彩虹表進行碰撞,相當於有一個存有大量數據的表,存了種種字元串對應的MD5字元串,破解的時候,用加密好的MD5 字元串到這個巨大的表裡進行檢索,由於這個表的數據量非常之大,檢索的時間也將很長,即使使用反推法去嘗試密碼,這也是一個需要耗費很長時間的工作。所以相對而言,MD5還是很安全的加密演算法。

使用MD5防止篡改的設計思路,正是利用MD5這樣的特性,對通過介面傳輸的數據進行兩次MD5加密,一次由調用方加密,一次由API數據接收方加密,再通過對比兩次加密的數據結果是否一致,從而起到防數據篡改的目的。

2.2.2 如何使用MD5

一般而言,API設計者需要在對外提供的介面文檔中約定MD5加密的欄位,以及順序。API介面調用方通過文檔中約定的順序進行MD5加密,同樣API後台也需要根據約定的順序進行加密,這樣才有對比的意義。如果接收到的MD5摘要和獲取參數生成的MD5摘要一致,則可以確定數據未被篡改,如果不一致,排除是介面調用方操作失誤後,基本可以確定數據被篡改,從而拒絕處理這批數據。

例如:A公司對外提供了一個客戶下訂單的介面,該介面共有兩個參數,產品編碼,和購買數量,產品編碼可以確定客戶購買的產品信息。考慮到數據被篡改的風險,A公司可以加入一個MD5摘要參數。並規定調用介面方,按照產品編碼加上購買數量進行MD5 摘要。如下:

摘要文件=MD5(產品編碼+購買數量)

介面調用方根據A公司要求,需要傳入3個參數,產品編碼,購買數量和MD5摘要。

A公司獲取到介面調用方傳入的參數,同樣按照產品編碼加上購買數量進行MD5 摘要。並對比自己生成的摘要文件和調用方傳入的摘要文件是否相等。若不相等,則說明數據有被篡改的風險,A公司應當放棄該筆介面請求。

2.3 令牌鑒權

2.3.1 什麼叫令牌

令牌可以理解為通行證,開放API介面,暴露在公網之後就相當於一個敞開大門的豪宅一樣,所有的人都可以隨意進出,對於豪宅內的財產而言,這是很不安全的。這時候就需要一個保安查看進出人員的通行證,只有獲得通行許可的人員可以進出,沒有通行證的人員一律會被攔在大門外,不得進入。

同樣對於開放API介面而言,如果沒有令牌機制,所有人都可以通過介面獲取數據,造成平台數據的流失,給公司和客戶造成不可估量的損失。所以使用令牌進行鑒權是非常有必要的。

2.3.2 令牌的生成機制

用戶在進行登錄之後,開放API介面伺服器按照一定的規則,生成不重複的一組字元串作為登陸人的令牌,並將令牌作為KEY放置於REDIS緩存伺服器中.VALUE則存放的是登陸用戶的基本信息等.並需要設置token的失效時間,具體失效時間業務系統可以根據自身的業務具體情況具體分析.

2.3.3 令牌的校驗

開放API調用方需要在每一次介面調用中都要攜帶令牌.伺服器則在過濾器中進行令牌的校驗,包含校驗令牌是否存在,令牌是否已經過期等等.如果令牌在REDIS緩存伺服器中不存在,或者令牌已經過期,則介面伺服器直接返回異常信息,由介面調用方進行捕獲,強制客戶重新登陸獲取新的令牌,再進行後續操作。令牌的校驗流程如圖2所示。

圖2 令牌校驗流程圖

3. 結語

隨著硬體設備,分散式計算能力的不斷提升,大數據處理能力的完善,也許現在還算安全的防護措施,在不久將來可就會變得不堪一擊,數據安全的攻防勢必是一場持久戰,只有不斷總結,改進,才能極大可能保護核心數據,和客戶的權益。

如果童鞋們在編程道路上有什麼困惑歡迎大家加入互聯網技術交流圈,這裡有一群愛分享的年輕人。正在跳轉


推薦閱讀:

TAG:開放API | 安全 | token |