開放API介面安全處理
阿新 • • 發佈:2018-12-11
一、開放API介面定義
- 顧名思義,開放出來給其他人呼叫的API介面就是開放API介面。例如,簡訊介面、郵件介面。
二、開放API的弱點
資料竊取
使用者的密碼等資訊被不軌之人竊取,登入賬號釋出敏感資訊,盜刷等。
資料篡改
提交的資料被抓包後進行篡改後再提交。
資料洩露
爬蟲將業務資料甚至核心資料抓取,直接或間接造成損失。
三、開放API解決方案
- RSA/DES 加密
- MD5 混淆演算法
- TOKEN 令牌
四、詳細介紹
1、加密
(1)對稱加密(DES、AES)
- 對稱加密是最快速、最簡單的一種加密方式,加密(encryption)與解密(decryption)用的是同樣的金鑰(secret key)。對稱加密有很多種演算法,由於它效率很高,所以被廣泛使用在很多加密協議的核心當中。
- 對稱加密通常使用的是相對較小的金鑰,一般小於256 bit。因為金鑰越大,加密越強,但加密與解密的過程越慢。
- 對稱加密的一大缺點是金鑰的管理與分配,換句話說,如何把金鑰傳送到需要解密你的訊息的人的手裡是一個問題。在傳送金鑰的過程中,金鑰有很大的風險會被黑客們攔截。現實中通常的做法是將對稱加密的金鑰進行非對稱加密,然後傳送給需要它的人。
(2)非對稱加密(RSA)
- 非對稱加密為資料的加密與解密提供了一個非常安全的方法,它使用了一對金鑰,公鑰(public key)和私鑰(private key)。私鑰只能由一方安全保管,不能外洩,而公鑰則可以發給任何請求它的人。非對稱加密使用這對金鑰中的一個進行加密,而解密則需要另一個金鑰。比如,你向銀行請求公鑰,銀行將公鑰發給你,你使用公鑰對訊息加密,那麼只有私鑰的持有人--銀行才能對你的訊息解密。與對稱加密不同的是,銀行不需要將私鑰通過網路傳送出去,因此安全性大大提高。
- 目前最常用的非對稱加密演算法是RSA演算法,是Rivest, Shamir, 和Adleman於1978年發明。
- RSA可以用於加密和簽名:
- HTTPS即用到了對稱加密也用到了非對稱加密(收費,伺服器開銷大,效能略低)
- RSA加密 Java 實現:
2、MD5 混淆演算法
- 是一種訊息摘要演算法,一種被廣泛使用的密碼雜湊函式,可以產生出一個128位的雜湊值,用於確保資訊傳輸完整一致,防止篡改。
- 不可逆的
- 儲存一些永遠不需要還原的資料,如 密碼、MAC地址、IMEI
- 通常配合salt 加鹽來加密
- 現在可以破解的是 通過一個彩虹表碰撞進行暴力破解
(1)使用
- 介面文件規定,介面哪些欄位(id+名稱)進行MD5+salt 加密傳輸到後臺,同樣後臺也按照相關規則計算,然後比對匹配
3、TOKEN 令牌
- 略
五、介面實戰經驗
1、不要用自增序列
2、日誌加完整,防背鍋
3、簡訊介面一定要加圖形驗證碼、人機驗證碼,業務判斷,尤其是註冊介面(沒有使用者的任何資訊)
4、冪等性( 提交一次和多次結果是一樣的)
5、時間戳(有效時間)
- 先獲取伺服器時間,當作引數一起MD5,然後後臺校驗MD5成功之後,判斷有效時間是否在30s之內。