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

目錄
使用場景
API簽名驗(yàn)證
實(shí)踐出真理
代碼實(shí)踐
首頁 后端開發(fā) php教程 API常用簽名驗(yàn)證方法(PHP實(shí)現(xiàn))

API常用簽名驗(yàn)證方法(PHP實(shí)現(xiàn))

Apr 29, 2020 pm 12:37 PM
api

使用場景

現(xiàn)在越來越多的項(xiàng)目使用的前后端分離的模式進(jìn)行開發(fā),后端開發(fā)人員使用API接口傳遞數(shù)據(jù)給到前端開發(fā)進(jìn)行處理展示,在一些比較重要的修改數(shù)據(jù)接口,涉及金錢,用戶信息等修改的接口如果不做防護(hù)驗(yàn)證,經(jīng)常容易被人惡意刷接口,導(dǎo)致巨大的損失。

API簽名驗(yàn)證

這里我們引入業(yè)內(nèi)比較通用的簽名驗(yàn)證來對接口進(jìn)行參數(shù)加密,有以下優(yōu)勢。

  • 請求的唯一性:計(jì)算出的簽名是唯一的,可以用來驗(yàn)證。

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

  • 請求的時(shí)效:由于請求中帶有當(dāng)前發(fā)起請求的時(shí)間戳參數(shù),服務(wù)端可以對時(shí)間戳進(jìn)行驗(yàn)證,過濾超出時(shí)效的請求。

  • 安全性:即使請求被人惡意抓包,對方惡意篡改其中的參數(shù),那么簽名都是錯(cuò)誤的,參數(shù)無法修改。

實(shí)踐出真理

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

{
    "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進(jìn)行序列化處理成待簽名字符串,拼接后的待簽名字符串為

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

3. 根據(jù)HMAC-SHA1算法使用密鑰提取待簽名字符串的摘要(hash)簽名并進(jìn)行base64_encode編碼(便于顯性傳輸和對比),假設(shè)簽名密鑰為 test ,則提取出的摘要簽名并進(jìn)行base64_encode的值為

JqoEqPIVVor0eyRHMYiZftsycVo=

注意:由于有些數(shù)據(jù)根據(jù)HTTP協(xié)議需求,在網(wǎng)絡(luò)傳輸過程中需要進(jìn)行URLencoding,這樣接收方才可以接收到正確的參數(shù),但如果這個(gè)參數(shù)參與簽名,那么待簽名字符串必須是字符串原值而非URLencoding 的值。

代碼實(shí)踐

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驗(yàn)證簽名方式,很簡單又非常使用,歡迎關(guān)注獲取更多的教程。

以上是API常用簽名驗(yàn)證方法(PHP實(shí)現(xiàn))的詳細(xì)內(nèi)容。更多信息請關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

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

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣服圖片

Undresser.AI Undress

Undresser.AI Undress

人工智能驅(qū)動(dòng)的應(yīng)用程序,用于創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用于從照片中去除衣服的在線人工智能工具。

Clothoff.io

Clothoff.io

AI脫衣機(jī)

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智能換臉工具輕松在任何視頻中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的代碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

功能強(qiáng)大的PHP集成開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

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

SublimeText3 Mac版

SublimeText3 Mac版

神級代碼編輯軟件(SublimeText3)

熱門話題

Laravel 教程
1601
29
PHP教程
1502
276
Oracle API使用指南:探索數(shù)據(jù)接口技術(shù) Oracle API使用指南:探索數(shù)據(jù)接口技術(shù) Mar 07, 2024 am 11:12 AM

Oracle是一家全球知名的數(shù)據(jù)庫管理系統(tǒng)提供商,其API(ApplicationProgrammingInterface,應(yīng)用程序接口)是一種強(qiáng)大的工具,可幫助開發(fā)人員輕松地與Oracle數(shù)據(jù)庫進(jìn)行交互和集成。在本文中,我們將深入探討OracleAPI的使用指南,向讀者展示如何在開發(fā)過程中利用數(shù)據(jù)接口技術(shù),同時(shí)提供具體的代碼示例。1.Oracle

如何在PHP項(xiàng)目中通過調(diào)用API接口來實(shí)現(xiàn)數(shù)據(jù)的爬取和處理? 如何在PHP項(xiàng)目中通過調(diào)用API接口來實(shí)現(xiàn)數(shù)據(jù)的爬取和處理? Sep 05, 2023 am 08:41 AM

如何在PHP項(xiàng)目中通過調(diào)用API接口來實(shí)現(xiàn)數(shù)據(jù)的爬取和處理?一、介紹在PHP項(xiàng)目中,我們經(jīng)常需要爬取其他網(wǎng)站的數(shù)據(jù),并對這些數(shù)據(jù)進(jìn)行處理。而許多網(wǎng)站提供了API接口,我們可以通過調(diào)用這些接口來獲取數(shù)據(jù)。本文將介紹如何使用PHP來調(diào)用API接口,實(shí)現(xiàn)數(shù)據(jù)的爬取和處理。二、獲取API接口的URL和參數(shù)在開始之前,我們需要先獲取目標(biāo)API接口的URL以及所需的

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

開發(fā)建議:如何利用ThinkPHP框架進(jìn)行API開發(fā)隨著互聯(lián)網(wǎng)的不斷發(fā)展,API(ApplicationProgrammingInterface)的重要性也日益凸顯。API是不同應(yīng)用程序之間進(jìn)行通信的橋梁,它可以實(shí)現(xiàn)數(shù)據(jù)共享、功能調(diào)用等操作,為開發(fā)者提供了相對簡單和快速的開發(fā)方式。而ThinkPHP框架作為一款優(yōu)秀的PHP開發(fā)框架,具有高效、可擴(kuò)展和易用

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

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

如何處理Laravel API報(bào)錯(cuò)問題 如何處理Laravel API報(bào)錯(cuò)問題 Mar 06, 2024 pm 05:18 PM

標(biāo)題:如何處理LaravelAPI報(bào)錯(cuò)問題,需要具體代碼示例在進(jìn)行Laravel開發(fā)時(shí),經(jīng)常會(huì)遇到API報(bào)錯(cuò)的情況。這些報(bào)錯(cuò)可能來自于程序代碼邏輯錯(cuò)誤、數(shù)據(jù)庫查詢問題或是外部API請求失敗等多種原因。如何處理這些報(bào)錯(cuò)是一個(gè)關(guān)鍵的問題,本文將通過具體的代碼示例來演示如何有效處理LaravelAPI報(bào)錯(cuò)問題。1.錯(cuò)誤處理在Laravel

React API調(diào)用指南:如何與后端API進(jìn)行交互和數(shù)據(jù)傳輸 React API調(diào)用指南:如何與后端API進(jìn)行交互和數(shù)據(jù)傳輸 Sep 26, 2023 am 10:19 AM

ReactAPI調(diào)用指南:如何與后端API進(jìn)行交互和數(shù)據(jù)傳輸概述:在現(xiàn)代的Web開發(fā)中,與后端API進(jìn)行交互和數(shù)據(jù)傳輸是一個(gè)常見的需求。React作為一個(gè)流行的前端框架,提供了一些強(qiáng)大的工具和功能來簡化這一過程。本文將介紹如何使用React來調(diào)用后端API,包括基本的GET和POST請求,并提供具體的代碼示例。安裝所需的依賴:首先,確保在項(xiàng)目中安裝了Axi

Insomnia教程:如何使用PHP API接口 Insomnia教程:如何使用PHP API接口 Jan 22, 2024 am 11:21 AM

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

PHP API接口:入門指南 PHP API接口:入門指南 Aug 25, 2023 am 11:45 AM

PHP是一種流行的服務(wù)器端腳本語言,用于構(gòu)建Web應(yīng)用程序和網(wǎng)站。它可以與各種不同類型的API接口進(jìn)行交互,并且在開發(fā)過程中非常方便。在本篇文章中,我們將提供一個(gè)PHPAPI接口的入門指南,幫助初學(xué)者更快地學(xué)會(huì)使用它。什么是API?API代表“應(yīng)用程序編程接口”,這是一種標(biāo)準(zhǔn)化的方式,它允許不同的應(yīng)用程序之間交換數(shù)據(jù)和信息。這種交互是通過訪問一個(gè)網(wǎng)站上的W

See all articles