1. 程式人生 > >php開發介面的安全認證方法總結

php開發介面的安全認證方法總結

這個必須要做,隱藏在app裡的介面如果沒有認證,現在hack app的人這麼多,很快就會被人發現,用來直接操作資料庫。

直觀總結方法二:

1.請求頭裡帶使用者username和password,到伺服器端做驗證,通過才繼續下邊業務邏輯。
有點:防止了伺服器端api被隨意呼叫。
缺點:每次都互動使用者名稱和密碼,互動量大,且密碼明文傳輸不安全。

2.第一次請求,要求username和password,驗證通過,種cookie到客戶端,app儲存cookie值。
每次請求帶上cookie。
點評:和pc上瀏覽器認證的原理一樣了。

以上兩點,只有註冊使用者,才能有權訪問業務邏輯,而app有大量的不需要註冊資料api

3.制定一個token生成規則,按某些伺服器端和客戶端都擁有的共同屬性生成一個隨機串,客戶端生成這個串,伺服器收到請求也校驗這個串。
缺點:隨機串生成規則要保密。
比如:一個使用php框架的工程,框架每次互動都會有 module和action兩個引數做路由,這樣的話,我就可以用下邊這個規則來生成token

app要請求使用者列表,api是“index.php?module=user&action=list”
app生成token = md5sum ('user'.'2012-11-28'.'#[email protected]%!'.list) = 880fed4ca2aabd20ae9a5dd774711de2;
實際發起請求為 “index.php?module=user&action=list&token=880fed4ca2aabd20ae9a5dd774711de2”

伺服器端接到請求用同樣方法計算token,

<?php
$module = $_GET['module'];
$action = $_GET['action'];
$token = md5sum($module.date('Y-m-d',time()).'#[email protected]%!*'.$action);
if($token != $_GET['token']){
    alarm('access deny');
    exit();
}
?>

先提這三個,都在專案中用過。