PHP開發api介面安全驗證

2021-08-14 10:51:47 字數 1985 閱讀 6781

目錄(?)

[+]

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

從圖中可以看得很清楚,前台想要呼叫介面,需要使用幾個引數生成簽名。

前台生成乙個簽名,當需要訪問介面的時候,把時間戳,隨機數,簽名通過url傳遞到後台。後台拿到時間戳,隨機數後,通過一樣的演算法規則計算出簽名,然後和傳遞過來的簽名進行對比,一樣的話,返回資料。

在前後臺互動中,演算法規則是非常重要的,前後臺都要通過演算法規則計算出簽名,至於規則怎麼制定,看你怎麼高興怎麼來。

我這個演算法規則是

時間戳,隨機數,口令按照首字母大小寫順序排序

然後拼接成字串

進行sha1加密

再進行md5加密

轉換成大寫。

這裡我並沒有實際的前台,直接使用乙個php檔案代替前台,然後通過curl模擬get請求。我使用的是tp框架,url格式是pathinfo格式。

}//curl模擬get請求。

//隨機生成字串

private function createnoncestr($length = 8)

return "z".$str;

}/**

* @param $timestamp 時間戳

* @param $randomstr 隨機字串

* @return string 返回簽名

*/private function arithmetic($timestamp,$randomstr)

}接受前台資料進行驗證

<?php 

/** * created by phpstorm.

* user: administrator

* date: 2017/3/16 0016

* time: 16:01

*/namespace server\controller;

use think\controller;

class servercontroller extends controller

//模擬資料

$arr['name'] = 'api';

$arr['age'] = 15;

$arr['address'] = 'zz';

$arr['ip'] = "192.168.0.1";

echo json_encode($arr);

}/**

* @param $timestamp 時間戳

* @param $randomstr 隨機字串

* @return string 返回簽名

*/public function arithmetic($timestamp,$randomstr)

}

string(57) ""
這種方法只是其中的一種方法,其實還有很多方法都是可以進行安全驗證的。

PHP開發api介面安全驗證

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

PHP開發api介面安全驗證

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

PHP開發api介面安全驗證

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