Heim  >  Artikel  >  Backend-Entwicklung  >  So verschlüsseln Sie die PHP-Schnittstelle

So verschlüsseln Sie die PHP-Schnittstelle

王林
王林Original
2019-09-26 17:39:372695Durchsuche

So verschlüsseln Sie die PHP-Schnittstelle

Analyseschnittstelle
Übertragungsregeln für Clientschnittstellen:
1. Verwenden Sie den cmd-Parameter (base64), um verschiedene Schnittstellen dynamisch aufzurufen , die Schnittstellenadresse ist einheitlich als http://a.lovexpp.com.

2. Bilden Sie die zu übergebenden Parameter in einem Array, fügen Sie das Zeitstempelelement (aktueller Zeitstempel, sekundengenau) zum Array hinzu und sortieren Sie die Schlüsselwerte des Arrays von groß nach klein in natürlicher Reihenfolge

3. Bilden Sie das Array zu einer Zeichenfolge in der Form key=val&key=val, verbinden Sie die Zeichenfolge mit XPP_KEY, verschlüsseln Sie sie einmal mit md5 (32-Bit-Kleinbuchstaben) und erhalten Sie ein Vorzeichen

4. Fügen Sie dem Parameter

im Array ein Vorzeichen hinzu. 5. Konvertieren Sie das Parameterarray in JSON und fordern Sie die Schnittstellenadresse mit der Post-Anfrage an. Der Schlüsselwert ist param

Serverschnittstellen-Analyseregeln:

1. Empfangen Sie den Parameter param, analysieren Sie das Ergebnis in JSON, um das Parameterarray zu erhalten

2. Nehmen Sie das Schild heraus und entfernen Sie die Anmeldung das Parameterarray

3. Sortieren Sie die Schlüsselwerte des Parameterarrays in natürlicher Reihenfolge von groß nach klein. Kleine Sortierung

4. Kombinieren Sie das sortierte Parameterarray zu einer Zeichenfolge in Form von key=val&key=val, verbinde die Zeichenfolge mit XPP_KEY, verschlüssele sie einmal mit md5 (32-Bit-Kleinbuchstaben) und erhalte das Vorzeichen

5. Vergleiche das Vorzeichen mit dem vom Client übergebenen Vorzeichen , die Parameter wurden möglicherweise während des Prozesses manipuliert und der Server lehnt die Anfrage ab

6. Vergleichen Sie das Zeichen mit dem Zeichen in der Sitzung. Wenn es dasselbe ist, handelt es sich um eine wiederholte Übermittlung und der Server lehnt die ab Anfrage

7. Diesmal wird das Zeichen in der Sitzung gespeichert

8. Führen Sie den Routing-Befehl aus (nach der Base64-Analyse) und bringen Sie die Parameter auf

<?php

$xpp_key = "xxx";

//接收参数param,将结果解析json得到参数数组
$param = json_decode($_POST[&#39;param&#39;] , true);

//取出sign,去掉参数数组中的sign
$client_sign = $param[&#39;sign&#39;];
unset($param[&#39;sign&#39;]);

//将参数数组key值按照自然排序从大到小排序
krsort($param);

//将排序后的参数数组按照key=val&key=val的形式组成字符串,将字符串与XPP_KEY连接,用md5加密一次(32位小写),得到sign
$sb = &#39;&#39;;
foreach($param as $key=>$val){
$sb .= $key . &#39;=&#39; . $val . &#39;&&#39;;
}
$sb .= $xpp_key;
$server_sign = md5($sb);

//将sign与客户端传过来的sign进行比对,如不一样则可能是中途被篡改参数,服务器拒绝此次请求
if($server_sign !== $client_sign){
echo json_encode(array(&#39;code&#39;=>&#39;invalid request&#39;));
exit;
}

//将sign与session中的sign对比,如果一样,则为重复提交,服务器拒绝此次请求
if($server_sign == $_SESSION[&#39;last_sign&#39;]){
echo json_encode(array(&#39;code&#39;=>&#39;Repeated requests&#39;));
exit();
}

//此次的sign存入session
$_SESSION[&#39;last_sign&#39;] = $server_sign;

//执行路由cmd(base64解析后),将参数带到该方法中
$cmd = base64_decode($param[&#39;cmd&#39;]);
list($__controller,$__action) = explode(&#39;-&#39; , $cmd);

// 设置请求参数
unset($param[&#39;cmd&#39;]);
unset($param[&#39;timestamp&#39;]);
foreach($param as $key => $val){
$_REQUEST[$key] = $val;
}

empfiehlt Tutorial: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonSo verschlüsseln Sie die PHP-Schnittstelle. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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
Vorheriger Artikel:Wofür ist PHP eine Sprache?Nächster Artikel:Wofür ist PHP eine Sprache?