Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der Sicherheitsüberprüfungsschritte für die PHP-Entwicklungs-API-Schnittstelle

Detaillierte Erläuterung der Sicherheitsüberprüfungsschritte für die PHP-Entwicklungs-API-Schnittstelle

php中世界最好的语言
Freigeben: 2023-03-26 12:10:01
Original
3458 Leute haben es durchsucht

Dieses Mal werde ich Ihnen die Sicherheitsüberprüfungsschritte für die PHP-Entwicklungs-API-Schnittstelle ausführlich erläutern. Was sind die Vorsichtsmaßnahmen für die Sicherheitsüberprüfung der PHP-Entwicklungs-API-Schnittstelle? Fall, werfen wir einen Blick darauf.

PHP-API-Schnittstelle

In der tatsächlichen Arbeit ist es üblich, PHP zum Schreiben von API-Schnittstellen zu verwenden Rezeption Sie können die von der Schnittstelle bereitgestellten Daten über den Link abrufen. Die zurückgegebenen Daten werden im Allgemeinen in XML und JSON unterteilt. Bei diesem Vorgang kennt der Server möglicherweise nicht die Quelle der Anforderung else ruft illegal unsere Schnittstelle auf, um Daten abzurufen, daher muss eine Sicherheitsüberprüfung durchgeführt werden.

Verifizierungsprinzip

Schematische Darstellung

Prinzip

Auf dem Bild ist deutlich zu erkennen, dass die Rezeption, wenn sie die Schnittstelle aufrufen möchte, mehrere Parameter verwenden muss, um eine Signatur zu generieren.

Zeitstempel: aktuelle Zeit

Zufallszahl: zufällig generierte Zufallszahl

Passwort: Während der Front-End- und Backend-Entwicklung eine Kennung beiden Parteien bekannt, was dem Geheimcode entspricht

Algorithmusregeln: Die vereinbarten Betriebsregeln, die oben genannten drei Parameter können die Algorithmusregeln verwenden, um eine Signatur zu generieren.

Das Frontend generiert eine Signatur, und wenn auf die Schnittstelle zugegriffen werden muss, werden der Zeitstempel, die Zufallszahl und die Signatur über die URL an das Backend übergeben. Nachdem der Zeitstempel und die Zufallszahl im Hintergrund abgerufen wurden, berechnet er die Signatur anhand derselben Algorithmusregeln und vergleicht sie dann mit der übergebenen Signatur. Wenn sie identisch sind, werden die Daten zurückgegeben.

Algorithmusregeln

Bei Front-End- und Back-End-Interaktionen sind Algorithmusregeln sowohl im Front-End als auch im Back-End sehr wichtig Sie müssen Signaturen anhand von Algorithmusregeln berechnen. Wie Sie die Regeln festlegen, hängt davon ab, wie Sie es möchten.

Die Regeln meines Algorithmus sind

1 Der Zeitstempel, die Zufallszahl und das Passwort werden in Groß-/Kleinschreibung sortiert

2 und dann in eine Zeichenfolge gespleißt

3 Sha1-Verschlüsselung durchführen

4 Anschließend MD5-Verschlüsselung durchführen

5 In Großbuchstaben umwandeln.

Frontend

Ich habe hier kein eigentliches Frontend, ich verwende direkt eine PHP-Datei anstelle des Frontends und simuliere dann ein GET-Anfrage über CURL. Ich verwende das TP-Framework und das URL-Format ist das Pathinfo-Format.

Quellcode

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/3/16 0016
 * Time: 15:56
 */
namespace Client\Controller;
use Think\Controller;
class ClientController extends Controller{
 const TOKEN = &#39;API&#39;;
 //模拟前台请求服务器api接口
 public function getDataFromServer(){
  //时间戳
  $timeStamp = time();
  //随机数
  $randomStr = $this -> createNonceStr();
  //生成签名
  $signature = $this -> arithmetic($timeStamp,$randomStr);
  //url地址
  $url = "http://www.apitest.com/Server/Server/respond/t/{$timeStamp}/r/{$randomStr}/s/{$signature}";
  $result = $this -> httpGet($url);
  dump($result);
 }
 //curl模拟get请求。
 private function httpGet($url){
  $curl = curl_init();
  //需要请求的是哪个地址
  curl_setopt($curl,CURLOPT_URL,$url);
  //表示把请求的数据已文件流的方式输出到变量中
  curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
  $result = curl_exec($curl);
  curl_close($curl);
  return $result;
 }
 //随机生成字符串
 private function createNonceStr($length = 8) {
  $chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
  $str = "";
  for ($i = 0; $i < $length; $i++) {
   $str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
  }
  return "z".$str;
 }
 /**
  * @param $timeStamp 时间戳
  * @param $randomStr 随机字符串
  * @return string 返回签名
  */
 private function arithmetic($timeStamp,$randomStr){
  $arr[&#39;timeStamp&#39;] = $timeStamp;
  $arr[&#39;randomStr&#39;] = $randomStr;
  $arr[&#39;token&#39;] = self::TOKEN;
  //按照首字母大小写顺序排序
  sort($arr,SORT_STRING);
  //拼接成字符串
  $str = implode($arr);
  //进行加密
  $signature = sha1($str);
  $signature = md5($signature);
  //转换成大写
  $signature = strtoupper($signature);
  return $signature;
 }
}
Nach dem Login kopieren

Serverseitig

Frontend-Daten zur Überprüfung akzeptieren

Quellcode

<?php
/**
 * Created by PhpStorm.
 * User: Administrator
 * Date: 2017/3/16 0016
 * Time: 16:01
 */
namespace Server\Controller;
use Think\Controller;
class ServerController extends Controller{
 const TOKEN = &#39;API&#39;;
 //响应前台的请求
 public function respond(){
  //验证身份
  $timeStamp = $_GET[&#39;t&#39;];
  $randomStr = $_GET[&#39;r&#39;];
  $signature = $_GET[&#39;s&#39;];
  $str = $this -> arithmetic($timeStamp,$randomStr);
  if($str != $signature){
   echo "-1";
   exit;
  }
  //模拟数据
  $arr[&#39;name&#39;] = &#39;api&#39;;
  $arr[&#39;age&#39;] = 15;
  $arr[&#39;address&#39;] = &#39;zz&#39;;
  $arr[&#39;ip&#39;] = "192.168.0.1";
  echo json_encode($arr);
 }
 /**
  * @param $timeStamp 时间戳
  * @param $randomStr 随机字符串
  * @return string 返回签名
  */
 public function arithmetic($timeStamp,$randomStr){
  $arr[&#39;timeStamp&#39;] = $timeStamp;
  $arr[&#39;randomStr&#39;] = $randomStr;
  $arr[&#39;token&#39;] = self::TOKEN;
  //按照首字母大小写顺序排序
  sort($arr,SORT_STRING);
  //拼接成字符串
  $str = implode($arr);
  //进行加密
  $signature = sha1($str);
  $signature = md5($signature);
  //转换成大写
  $signature = strtoupper($signature);
  return $signature;
 }
}
Nach dem Login kopieren

Ergebnis

string(57) "{"name":"api","age":15,"address":"zz","ip":"192.168.0.1"}"
Nach dem Login kopieren

Ich glaube, Sie haben die Methode gemeistert, nachdem Sie den Fall hier gelesen haben Artikel, mehr Bitte beachten Sie andere verwandte Artikel auf der chinesischen PHP-Website!

Empfohlene Lektüre:

Detaillierte Erläuterung der Schritte für PHP zum Senden einer JSON-Formatzeichenfolge basierend auf CURL

ThinkPHP-Framework Aktualisierung der Benutzerinformationsabfrage und detaillierte Erläuterung der Löschschritte

Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Sicherheitsüberprüfungsschritte für die PHP-Entwicklungs-API-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage