1. 程式人生 > >開放API介面安全處理

開放API介面安全處理

一、開放API介面定義

  • 顧名思義,開放出來給其他人呼叫的API介面就是開放API介面。例如,簡訊介面、郵件介面。

二、開放API的弱點

  1. 資料竊取

    使用者的密碼等資訊被不軌之人竊取,登入賬號釋出敏感資訊,盜刷等。

  2. 資料篡改

    提交的資料被抓包後進行篡改後再提交。

  3. 資料洩露

    爬蟲將業務資料甚至核心資料抓取,直接或間接造成損失。

三、開放API解決方案

  1. RSA/DES 加密
  2. MD5 混淆演算法
  3. 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之內。