php api介面安全設計 sign

2021-08-08 13:29:19 字數 1809 閱讀 4634

一. url請求的引數包括:timestamp,token,username,sign

1. timestamp: 

時間戮2. token:

登陸驗證時,驗證成功後,生成唯一的token(可以為uuid),並把token儲存到快取(redis)裡 ,鍵為username,值為token

3. username:

使用者名稱,保證唯一

4. sign:

規則:引數timestamp,token,username按字典排序,md5加密碼(加點鹽),後大寫

使用者登陸,驗證成功後,生成sign

二. url 攔截規則,驗證

1.  使用者登陸,驗證成功後,生成token,快取(username->token)並返回給客戶端

2.  客戶端每個介面請求(除登陸介面)時,傳必要的引數timestamp,token,username, sign,沒傳直接返回報錯

3.  timestamp作用:是否在有效期內,有效期可以設定10,20分鐘,根據需求設定

比如說  過期時間設定為10分        服務接受到請求的當前時間戳是30,傳過來的timestamp時間戳是10,30-10>10, 說明這個請求過期

4.  token作用:直接與redis中的username鍵值 對比,如果不相等,則過期,或如果redis快取時間過期了,也過期

5. sign作用:根據規則傳過來的引數,生成sign,與傳過來的sign對比。如果不相等,報錯

1.http介面安全概述:

1.1、http介面是網際網路各系統之間對接的重要方式之一,使用http介面,開發和呼叫都很方便,也是被大量採用的方式,它可以讓不同系統之間實現資料的交換和共享,但由於http介面開放在網際網路上,那麼我們就需要有一定的安全措施來保證不能是隨隨便便就可以呼叫;

1.2、目前國內網際網路公司主要採用兩種做法實現介面的安全:

一種是以支付寶等支付公司為代表的私鑰公鑰簽名驗證機制;

一種是大量網際網路企業都常採用的引數簽名驗證機制;

2. http介面安全演進:

2.1.完全開放的介面(完全開放)

2.2.介面引數簽名(基本安全)

2.3.介面引數簽名+時效性驗證(更加安全)

2.4.介面引數私鑰簽名公鑰驗籤(固若金湯)

2.5.介面引數簽名+https(金鐘罩)

2.6.口引數私鑰簽名公鑰驗籤+https(金鐘罩)

總之:安全是相對的,只有相對的安全,沒有絕對的安全!

3.http介面安全設計及應用

3.1 介面引數私鑰簽名公鑰驗籤

先來看看私鑰+公鑰的安全模式,這是一種更為安全的方式,它通過私鑰和公鑰實現介面的安全,目前網際網路中主要是以支付寶

為代表的公司採用這種機制;(有很多開放平台也是採用這種機制) . 具體業務流所示:

該簽名是通過4個秘鈅來實現的,分別是:

客戶端應用私鑰 , 客戶端公鑰 , 服務端應用私鑰 , 服務端公鑰.

私鑰都是用來生成簽名的,公鑰都是用來解密的,客戶端的公鑰解密客戶端的私鑰生成的簽名,服務端的公鑰解密服務端的私鑰生

成的簽名,相信這樣解釋應該會比較好理解的.

好了,下面就來看看是如何具體操作的,我的具體操作步驟:

首先,4把金鑰都是通過openssl工具生成,你需要先獲得這個工具:官方**:

介紹一下這個工具吧,openssl 是乙個開源的安全套接字層密碼庫,囊括主要的密碼演算法、常用的金鑰和證書封裝管理功能及ssl協議,並提供豐富的應用程式測試或其它目的使用;openssl整個軟體包大概可以分成三個主要的功能部分:ssl協議庫、應用程式以及密碼演算法庫;

原文: 

PHP API介面 安全篇

一般的解決方案如下 1 token授權認證,防止未授權使用者獲取資料 2 時間戳超時機制 3 url簽名,防止請求引數被篡改 4 防重放,防止介面被第二次請求,防採集 5 採用https通訊協議,防止資料明文傳輸 一 token授權認證 http協議是無狀態的,一次請求結束,連線斷開,下次伺服器再收...

php API介面入門

1.簡述 api介面開發,其實和平時開發邏輯差不多 但是也有略微差異 平時使用mvc開發 的思路一般是都 由控制器 去 呼叫模型,模型返回資料,再由控制器把資料放到檢視中,展現給使用者 api開發是 使用控制器 去呼叫模型,模型返回資料,在有控制器 輸出 json格式字串 或者 xml 字串 2.邏...

Google翻譯介面 PHP API

google翻譯php介面 官成文 2009 03 28 注意 如果翻譯文字為utf 8編碼,則要刪去mb convert encoding函式 class google api translator public url public text 翻譯文字 public out 翻譯輸出 funct...