亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
使用場景
API簽章驗證
實踐真理
程式碼實作
首頁 後端開發(fā) php教程 API常用簽章驗證方法(PHP實作)

API常用簽章驗證方法(PHP實作)

Apr 29, 2020 pm 12:37 PM
api

使用場景

現(xiàn)在越來越多的專案使用的前後端分離的模式進行開發(fā),後端開發(fā)人員使用API??介面?zhèn)鬟f資料給到前端開發(fā)進行處理展示,在一些比較重要的修改資料接口,涉及金錢,使用者資訊等修改的接口如果不做防護驗證,經(jīng)常容易被人惡意刷接口,導致巨大的損失。

API簽章驗證

這裡我們引入業(yè)內(nèi)比較通用的簽章驗證來對介面進行參數(shù)加密,有以下優(yōu)勢。

  • 請求的唯一性:計算的簽章是唯一的,可以用來驗證。

  • 參數(shù)的可變性:參數(shù)包含時間戳參數(shù),這就確保每次的請求計算出得簽名都是不一樣的。

  • 請求的時效:由於請求中帶有目前發(fā)起請求的時間戳參數(shù),服務端可以對時間戳進行驗證,過濾超出時效的請求。

  • 安全:即使請求被人惡意抓包,對方惡意竄改其中的參數(shù),那麼簽章都是錯的,參數(shù)無法修改。

實踐真理

1. 對map類型(即一組鍵值對)的待簽章資料根據(jù)鍵的大小進行排序。 map中各參數(shù)依字母順序排序,如果第一個字母相同,按第二個字母排序,依次類推。例如

{
    "timestamp": "2017-06-08 09:38:00",
    "format": "xml",
    "app_id": "aabbc",
    "cp_extend_info": "",
    "sign_type": "HMAC-SHA1",
    "sign": "abc"
}

那麼,排序後變成

{
    "app_id": "aabbc",
    "cp_extend_info": "",
    "format": "xml",
    "sign_type": "HMAC-SHA1",
    "timestamp": "2017-06-08 09:38:00"
}

注意:如果map包含簽名的參數(shù)(sign)需要過濾該參數(shù)的鍵值不參與簽名,沒有值的參數(shù)請不要參與簽名

2. 對排序後的map進行序列化處理成待簽名字串,拼接後的待簽名字串為

app_id=aabbc&format=xml&sign_type=HMAC-SHA1&timestamp=2017-06-08 09:38:00

3.?根據(jù)HMAC-SHA1演算法使用金鑰提取待簽章字串的摘要(hash)簽章並進行base64_encode編碼(便於顯性傳輸與比較),假設簽章金鑰為test ,則擷取的摘要簽章並進行base64_encode的值為

JqoEqPIVVor0eyRHMYiZftsycVo=

注意:由於有些資料根據(jù)HTTP協(xié)定需求,在網(wǎng)路傳輸過程中需要進行URLencoding,這樣接收方才可以接收到正確的參數(shù),但如果這個參數(shù)參與簽章,那麼待簽章字串必須是字串原值而非URLencoding 的值。

程式碼實作

PHP範例

/**
 * 使用密鑰生成HMAC-Sha1簽名
 * @param array $params 請求參數(shù)
 * @param string $signKey 簽名密鑰
 * @return string
 */
function hmacSha1Sign($params,$signKey)
{
    ksort($params);
 
    $paramString = '';
    foreach ($params as $key => $value) {
        if (is_null($value) || $value=='' || $key == 'sign') {
            continue;
        }
        $paramString .= $key.'='.$value.'&';
    }
    $paramString = substr($paramString,0,-1);
    $sign = base64_encode(hash_hmac("sha1", $paramString, $signKey, $raw_output=TRUE));
    return $sign;
}

以上就是日常開發(fā)常用的API驗證簽章方式,很簡單又非常使用,歡迎關注以獲取更多的教學。

以上是API常用簽章驗證方法(PHP實作)的詳細內(nèi)容。更多資訊請關注PHP中文網(wǎng)其他相關文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發(fā)現(xiàn)涉嫌抄襲或侵權的內(nèi)容,請聯(lián)絡admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Oracle API使用指南:探索資料介面技術 Oracle API使用指南:探索資料介面技術 Mar 07, 2024 am 11:12 AM

Oracle是一家全球知名的資料庫管理系統(tǒng)供應商,其API(ApplicationProgrammingInterface,應用程式介面)是一種強大的工具,可協(xié)助開發(fā)人員輕鬆地與Oracle資料庫互動和整合。在本文中,我們將深入探討OracleAPI的使用指南,向讀者展示如何在開發(fā)過程中利用資料介面技術,同時提供具體的程式碼範例。 1.Oracle

如何在PHP專案中透過呼叫API介面來實現(xiàn)資料的爬取與處理? 如何在PHP專案中透過呼叫API介面來實現(xiàn)資料的爬取與處理? Sep 05, 2023 am 08:41 AM

如何在PHP專案中透過呼叫API介面來實現(xiàn)資料的爬取與處理?一、介紹在PHP專案中,我們經(jīng)常需要爬取其他網(wǎng)站的數(shù)據(jù),並對這些數(shù)據(jù)進行處理。而許多網(wǎng)站提供了API接口,我們可以透過呼叫這些接口來取得資料。本文將介紹如何使用PHP來呼叫API接口,實現(xiàn)資料的爬取與處理。二、取得API介面的URL和參數(shù)在開始之前,我們需要先取得目標API介面的URL以及所需的

開發(fā)建議:如何利用ThinkPHP框架進行API開發(fā) 開發(fā)建議:如何利用ThinkPHP框架進行API開發(fā) Nov 22, 2023 pm 05:18 PM

開發(fā)建議:如何利用ThinkPHP框架進行API開發(fā)隨著網(wǎng)際網(wǎng)路的不斷發(fā)展,API(ApplicationProgrammingInterface)的重要性也日益凸顯。 API是不同應用程式之間進行通訊的橋樑,它可以實現(xiàn)資料共享、功能呼叫等操作,為開發(fā)者提供了相對簡單且快速的開發(fā)方式。而ThinkPHP框架作為一款優(yōu)秀的PHP開發(fā)框架,具有高效能、可擴展且易用

Oracle API整合策略解析:實現(xiàn)系統(tǒng)間無縫通信 Oracle API整合策略解析:實現(xiàn)系統(tǒng)間無縫通信 Mar 07, 2024 pm 10:09 PM

OracleAPI整合策略解析:實現(xiàn)系統(tǒng)間無縫通信,需要具體程式碼範例在當今數(shù)位化時代,企業(yè)內(nèi)部系統(tǒng)之間需要相互通信和資料共享,而OracleAPI就是幫助實現(xiàn)系統(tǒng)間無縫通信的重要工具之一。本文將從OracleAPI的基本概念和原則入手,探討API整合的策略,最終給出具體的程式碼範例幫助讀者更好地理解和應用OracleAPI。一、OracleAPI基本

如何處理Laravel API報錯問題 如何處理Laravel API報錯問題 Mar 06, 2024 pm 05:18 PM

標題:如何處理LaravelAPI報錯問題,需要具體程式碼範例在進行Laravel開發(fā)時,常會遇到API報錯的情況。這些報錯可??能來自於程式碼邏輯錯誤、資料庫查詢問題或是外部API請求失敗等多種原因。如何處理這些報錯是一個關鍵的問題,本文將透過具體的程式碼範例來示範如何有效處理LaravelAPI報錯問題。 1.錯誤處理在Laravel

React API呼叫指南:如何與後端API互動和資料傳輸 React API呼叫指南:如何與後端API互動和資料傳輸 Sep 26, 2023 am 10:19 AM

ReactAPI呼叫指南:如何與後端API進行互動和資料傳輸概述:在現(xiàn)代的Web開發(fā)中,與後端API進行互動和資料傳輸是一個常見的需求。 React作為一個流行的前端框架,提供了一些強大的工具和功能來簡化這個過程。本文將介紹如何使用React來呼叫後端API,包括基本的GET和POST請求,並提供具體的程式碼範例。安裝所需的依賴:首先,確保在專案中安裝了Axi

Insomnia教學:如何使用PHP API介面 Insomnia教學:如何使用PHP API介面 Jan 22, 2024 am 11:21 AM

PHPAPI介面:如何使用InsomniaInsomnia是一款功能強大的API測試和偵錯工具,它能夠幫助開發(fā)者快速、方便地測試和驗證API接口,支援多種程式語言和協(xié)議,其中包括PHP。本文將介紹如何使用Insomnia測試PHPAPI介面。第一步:安裝InsomniaInsomnia是一款跨平臺的應用程序,支援Windows、MacOS和Linux等

PHP API介面:入門指南 PHP API介面:入門指南 Aug 25, 2023 am 11:45 AM

PHP是一種流行的伺服器端腳本語言,用於建立網(wǎng)頁應用程式和網(wǎng)站。它可以與各種不同類型的API介面進行交互,並且在開發(fā)過程中非常方便。在本篇文章中,我們將提供一個PHPAPI介面的入門指南,幫助初學者更快學會使用它。什麼是API? API代表“應用程式介面”,這是一種標準化的方式,它允許不同的應用程式之間交換資料和資訊。這種交互是透過造訪一個網(wǎng)站上的W

See all articles