API開發之介面安全(三) sign有效時間

2022-08-23 09:42:07 字數 1227 閱讀 5010

之前生成的sign和校驗sign我們已經完全掌握了、但是僅僅憑藉這樣的sign是無法滿足我們的需求的,如果乙個黑客通過抓包抓到你的資料 他可以去修改你的header為這樣的 body為那樣的 也是可以通過sign校驗的 那麼我們怎麼解決呢 下面將詳細的 為大家解說

首先想到這樣的乙個問題 我麼首先應當考慮到的就是sign的時效性問題 如果 我們的sign只有十秒的時間 那就算抓包 他也只能在這十秒裡使用 那麼有了這個想法之後 我們是否應當在 生成sign之前加入 time引數呢 這個time具體怎麼加入呢?

我們先建立乙個 time 類 來生成我們sign所需要的time

<?php/**

* created by phpstorm.

* user: administrator

* date: 2019/8/16

* time: 10:20 */

/***

* 生成以時間戳拼接的13位字串

* class time */

class

time

}

建立好我們時間生成類之後 我們需要在 生成sign的時候加入 time 引數

'time' => time::get13timestamp(),

然後生成sign

iauth::setsign($data)

生成之後 我們就會獲得到 加入 time 引數之後 返回的 sign了  

下來我們拿到這個sign之後進行校驗

我們需要修改下我們的校驗方法  checksignpass  使time引數參與進來

新增判斷

#

#乘除1000增加唯一性

return

false

; }

return

[ 'aeskey' => 'asdasd4wq5646', #

aes秘鑰 服務端必須和客戶端保持一致

'method' => 'aes-128-ecb',

'iv' => '',

'options' => '0',

'ios',

'android',],

這樣 我們就成功的將時間加入到了 sign 中  但是 這樣的話 還是不能保證我們資料的 安全性 我們需要進一步的 是sign有更高一級的安全性(唯一性)才行 那麼怎麼做呢 下章我們繼續解刨sign

php api介面安全設計 sign

一.url請求的引數包括 timestamp,token,username,sign 1.timestamp 時間戮2.token 登陸驗證時,驗證成功後,生成唯一的token 可以為uuid 並把token儲存到快取 redis 裡 鍵為username,值為token 3.username 使用...

PHP開發api介面安全驗證

目錄 在實際工作中,使用php寫api介面是經常做的,php寫好介面後,前台就可以通過鏈結獲取介面提供的資料,而返回的資料一般分為兩種情況,xml和json,在這個過程中,伺服器並不知道,請求的 是什麼,有可能是別人非法呼叫我們的介面,獲取資料,因此就要使用安全驗證。從圖中可以看得很清楚,前台想要呼...

PHP開發api介面安全驗證

隨機數 隨機生成的隨機數 口令 前後臺開發時,乙個雙方都知道的標識,相當於暗號 演算法規則 商定好的運算規則,上面三個引數可以利用演算法規則生成乙個簽名。然後拼接成字串 進行sha1加密 再進行md5加密 轉換成大寫。curl模擬get請求。隨機生成字串 private function creat...