


Apa yang perlu dilakukan jika pengesahan keselamatan php api gagal
Nov 26, 2021 am 10:16 AMPenyelesaian kepada kegagalan pengesahan keselamatan api PHP: 1. Gunakan fail PHP untuk menggantikan bahagian hadapan 2. Simulasikan permintaan GET melalui CURL 3. Terima data bahagian hadapan untuk pengesahan.
Persekitaran pengendalian artikel ini: sistem Windows 7, PHP7.1, Dell G3.
Apakah yang perlu saya lakukan jika pengesahan keselamatan php api gagal?
antara muka php api
dalam kerja sebenar, ia adalah biasa untuk menggunakan PHP untuk menulis antara muka API Selepas PHP menulis antara muka, meja depan boleh mendapatkan data yang disediakan oleh antara muka melalui pautan, dan data yang dikembalikan biasanya dibahagikan kepada dua situasi, xml dan json. pelayan tidak Saya tidak tahu apakah sumber permintaan itu. Mungkin ada orang lain yang secara haram memanggil antara muka kami untuk mendapatkan data, jadi pengesahan keselamatan diperlukan.
Prinsip pengesahan
Rajah skematik
Prinsip
Ia boleh dilihat dengan jelas dari gambar bahawa jika meja depan ingin memanggil antara muka, ia perlu menggunakan beberapa parameter untuk menjana tandatangan.
- Cop masa: masa semasa
- Nombor rawak: nombor rawak yang dijana secara rawak
- Kata Laluan: Semasa pembangunan bahagian hadapan dan belakang, pengecam yang diketahui oleh kedua-duanya pihak, bersamaan dengan Kata Laluan
- Peraturan algoritma: Peraturan operasi yang dipersetujui Tiga parameter di atas boleh menggunakan peraturan algoritma untuk menjana tandatangan.
Halaman hadapan menjana tandatangan, dan apabila perlu untuk mengakses antara muka, cap waktu, nombor rawak dan tandatangan dihantar ke hujung belakang melalui URL. Selepas mendapat cap masa dan nombor rawak di latar belakang, ia mengira tandatangan melalui peraturan algoritma yang sama, dan kemudian membandingkannya dengan tandatangan yang diluluskan Jika ia adalah sama, data dikembalikan.
Peraturan Algoritma
Dalam interaksi front-end dan back-end, peraturan algoritma sangat penting bahagian depan dan belakang mesti mengira tandatangan melalui peraturan algoritma Mengenai cara merumuskan peraturan, lihat Datang sesuka hati.
Peraturan algoritma saya ialah
Setem masa, nombor rawak dan kata laluan diisih mengikut susunan huruf pertama
-
Kemudian Gabungkan menjadi rentetan
lakukan penyulitan sha1
dan kemudian lakukan penyulitan MD5
tukar kepada huruf besar .
Frontend
Saya tidak mempunyai frontend sebenar di sini, saya terus menggunakan fail PHP dan bukannya frontend, dan kemudian mensimulasikan DAPATKAN permintaan melalui CURL. Saya menggunakan rangka kerja TP dan format URL ialah format pathinfo.
Kod sumber
<?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 = 'API'; //模擬前臺請求服務器api接口 public function getDataFromServer(){ //時間戳 $timeStamp = time(); //隨機數(shù) $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); //表示把請求的數(shù)據(jù)已文件流的方式輸出到變量中 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['timeStamp'] = $timeStamp; $arr['randomStr'] = $randomStr; $arr['token'] = self::TOKEN; //按照首字母大小寫順序排序 sort($arr,SORT_STRING); //拼接成字符串 $str = implode($arr); //進行加密 $signature = sha1($str); $signature = md5($signature); //轉(zhuǎn)換成大寫 $signature = strtoupper($signature); return $signature; } }
Sebelah pelayan
Terima data bahagian hadapan untuk pengesahan
Kod sumber
<?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 = 'API'; //響應前臺的請求 public function respond(){ //驗證身份 $timeStamp = $_GET['t']; $randomStr = $_GET['r']; $signature = $_GET['s']; $str = $this -> arithmetic($timeStamp,$randomStr); if($str != $signature){ echo "-1"; exit; } //模擬數(shù)據(jù) $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){ $arr['timeStamp'] = $timeStamp; $arr['randomStr'] = $randomStr; $arr['token'] = self::TOKEN; //按照首字母大小寫順序排序 sort($arr,SORT_STRING); //拼接成字符串 $str = implode($arr); //進行加密 $signature = sha1($str); $signature = md5($signature); //轉(zhuǎn)換成大寫 $signature = strtoupper($signature); return $signature; } }
Keputusan
string(57) "{"name":"api","age":15,"address":"zz","ip":"192.168.0.1"}"
Ringkasan
Kaedah ini hanyalah salah satu daripada mereka Satu kaedah, sebenarnya terdapat banyak kaedah yang boleh digunakan untuk pengesahan keselamatan.
Pembelajaran yang disyorkan: "Tutorial Video PHP"
Atas ialah kandungan terperinci Apa yang perlu dilakukan jika pengesahan keselamatan php api gagal. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)