国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
antara muka php api
Prinsip pengesahan
Rajah skematik
Peraturan Algoritma
Frontend
Kod sumber
Sebelah pelayan
Keputusan
Ringkasan
Rumah pembangunan bahagian belakang masalah PHP Apa yang perlu dilakukan jika pengesahan keselamatan php api gagal

Apa yang perlu dilakukan jika pengesahan keselamatan php api gagal

Nov 26, 2021 am 10:16 AM
keselamatan antara muka php

Penyelesaian 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.

Apa yang perlu dilakukan jika pengesahan keselamatan php api gagal

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

Apa yang perlu dilakukan jika pengesahan keselamatan php api gagal

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 = &#39;API&#39;;
    //模擬前臺請求服務器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[&#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);
        //轉(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 = &#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;
        }
        //模擬數(shù)據(jù)
        $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);
        //轉(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!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

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

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276