API 介面的安全處理
背景
開放 API 介面如果沒有經過安全處理,則很容易出現三類安全問題,包括資訊截獲、篡改與洩露。
首先是使用者密碼容易被截獲,比如某家公司在開發開放式 API 時,沒有對其進行安全控制,那麼該公司的客戶資訊很容易被黑客截獲,黑客在掌握客戶的使用者名稱、密碼等相關資訊與資料後,便能夠利用客戶的身份來登入,使得客戶的隱私資訊洩露,黑客便可以輕易地盜刷客戶信用卡,使得客戶承受損傷;其次是表單資料很容易被篡改,比如某家公司所開發的開放 API 並沒有進行過防篡改控制,有客戶在購買1000 元產品後,其提交表單被黑客利用技術手段篡改為 10 塊錢,從而使得公司產生了經濟損失。
開放 API 介面安全問題解決方案
針對開放 API 平臺存在的上述安全問題,可以使用非對稱加密、MD5 摘要以及令牌機制進行預防和阻擊。使用Eolinker Api 測試工具對API介面資訊進行加密,使得介面呼叫更加安全放心。
如圖1 ,Eolinker API介面測試工具提供多種加密方式。
圖1
非對稱加密的加密與解密流程
開放 API 平臺生成公鑰和私鑰,並將公鑰對外公佈,提供給需要對接 API 的人員。對接 API 的人員將使用者的資料使用公鑰進行加密傳輸,即使有黑客使用抓包工具擷取到了報文,但是由於解密使用者資料只能使用 API 平臺自己擁有的私鑰才能解密,所以即使報文資料洩露,由於沒有鑰匙解開傳輸的資訊,黑客獲得了報文也無可奈何,非對稱加密解決了使用者傳輸使用者名稱、密碼等敏感資訊洩露的問題。
RSA 與 HTTPS 的對比
如果條件允許,建議開放 API 介面都使用 HTTPS 協議傳輸資料。使用 HTTPS 傳輸相較於 RSA 加密更安全。HTTPS顧名思義,即安全的 HTTP,HTTPS 的主要作用是確認雙方的身份和建立安全通道,保證傳輸資料的安全。
HTTPS 既用到了非對稱加密,也用到了對稱加密。相較於 RSA 加密,RSA 加密實現的,HTTPS 都能實現。但是 HTTPS 存在維護成本高、伺服器開銷大、需要購買證書、效能相對低的問題,所以出於成本的考慮不能使用 HTTPS,使用 RSA 加密演算法是最優的選擇。使用Eolinker API介面測試工具選擇HTTPS方式進行介面測試。如圖2。
圖2
令牌鑑權
令牌可以理解為通行證,開放 API 介面暴露在公網之後就相當於一個敞開大門一樣,所有人都可以隨意進出,對於豪宅內的財產而言,這是很不安全的。
這時就需要一個保安檢視進出人員的通行證,只有獲得通行許可的人員可以進出,沒有通行證的人員一律會被攔在大門外,不得進入。
同樣對於開放 API 介面而言,如果沒有令牌機制,所有人都可以通過介面獲取資料,造成平臺數據流失,給公司和客戶造成不可估量的損失。所以使用令牌進行鑑權是非常有必要的。
開放 API 呼叫方需要在每一次介面呼叫中都攜帶令牌,伺服器則在過濾器中進行令牌的校驗,包含校驗令牌是否存在、令牌是否已經過期等。如果令牌在 REDIS 快取伺服器中不存在,或者令牌已過期,則介面伺服器直接返回異常資訊,由介面呼叫方進行捕獲,強制客戶重新登入獲取新的令牌,再進行後續操作。
總結
隨著硬體裝置分散式計算能力的不斷提升、大資料處理能力的完善,也許現在還算先進的防護措施,在不久的將來就會變得不堪一擊。資料安全的攻防勢必是一場持久戰,只有不斷總結、改進,才能保護核心資料和客戶的權益。
文中演示工具為Eolink,支援線上使用。感興趣者可直接訪問:www.eolink.com使用!