国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

PHP 如何設(shè)計(jì)一個(gè)高安全的電商平臺(tái):淘寶/京東商品類(lèi)API封裝接口

這篇具有很好參考價(jià)值的文章主要介紹了PHP 如何設(shè)計(jì)一個(gè)高安全的電商平臺(tái):淘寶/京東商品類(lèi)API封裝接口。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

電商API接口有哪些安全問(wèn)題?

PHP 如何設(shè)計(jì)一個(gè)高安全的電商平臺(tái):淘寶/京東商品類(lèi)API封裝接口,java,前端,網(wǎng)絡(luò)

如何保證API接口安全

接口的安全性主要圍繞Token、Timestamp和Sign三個(gè)機(jī)制展開(kāi)設(shè)計(jì),保證接口的數(shù)據(jù)不會(huì)被篡改和重復(fù)調(diào)用,下面具體來(lái)看:

Token授權(quán)機(jī)制:用戶(hù)使用用戶(hù)名密碼登錄后服務(wù)器給客戶(hù)端返回一個(gè)Token(通常是UUID),并將Token-UserId以鍵值對(duì)的形式存放在緩存服務(wù)器中。服務(wù)端接收到請(qǐng)求后進(jìn)行Token驗(yàn)證,如果Token不存在,說(shuō)明請(qǐng)求無(wú)效。

PHP 如何設(shè)計(jì)一個(gè)高安全的電商平臺(tái):淘寶/京東商品類(lèi)API封裝接口,java,前端,網(wǎng)絡(luò)

時(shí)間戳超時(shí)機(jī)制:用戶(hù)每次請(qǐng)求都帶上當(dāng)前時(shí)間的時(shí)間戳timestamp,服務(wù)端接收到timestamp后跟當(dāng)前時(shí)間進(jìn)行比對(duì),如果時(shí)間差大于一定時(shí)間(比如5分鐘),則認(rèn)為該請(qǐng)求失效,這個(gè)時(shí)間要保證足夠完成本次請(qǐng)求的同時(shí)盡量短,可以減少緩存服務(wù)器的壓力(見(jiàn)簽名機(jī)制)。

簽名機(jī)制:將Token和時(shí)間戳加上其他請(qǐng)求參數(shù)就行MD5或SHA-1算法(可根據(jù)情況加點(diǎn)鹽)加密,加密后的數(shù)據(jù)為本次請(qǐng)求的簽名sign,并將該簽名存放到緩存服務(wù)器中,超時(shí)時(shí)間設(shè)定為跟時(shí)間戳的超時(shí)時(shí)間一致(這就是為什么要盡量短,二者時(shí)間一致可以保證無(wú)論在timestamp規(guī)定時(shí)間內(nèi)還是外本URL都只能訪(fǎng)問(wèn)一次)。服務(wù)端接收到請(qǐng)求后以同樣的算法得到簽名,并跟當(dāng)前的簽名進(jìn)行比對(duì),如果不一樣,說(shuō)明參數(shù)被更改過(guò),直接返回錯(cuò)誤標(biāo)識(shí)。同一個(gè)簽名只能使用一次,如果發(fā)現(xiàn)緩存服務(wù)器中已經(jīng)存在了本次簽名,則拒絕服務(wù)。

sign生成規(guī)則及步驟:

① 第一步:將所有需要發(fā)送至服務(wù)端的請(qǐng)求參數(shù)(空參數(shù)值的參數(shù)、文件、字節(jié)流、sign除外)按照參數(shù)名ASCII碼從小到大排序(字典序)

注意:

????? l 參數(shù)名ASCII碼從小到大排序(字典序);

????? l 如果參數(shù)的值為空不參與簽名;

????? l 文件、字節(jié)流不參與簽名;

????? l sign不參與簽名;

????? l 參數(shù)名、參數(shù)值區(qū)分大小寫(xiě);

②第二步:將排序后的參數(shù)按照URL鍵值對(duì)的格式(即key1=value1&key2=value2…)拼接成字符串strA;

③第三步:在strA后面拼接上apiKey得到striSignTemp字符串,將strSignTemp字符串轉(zhuǎn)換為小寫(xiě)字符串后進(jìn)行MD5運(yùn)算,MD5運(yùn)算后得到值作為sign的值傳入服務(wù)端;

/* * @desc 簽名函數(shù) * @param $paramArr 系統(tǒng)參數(shù) * @param $apiKey 私鑰 * @return string 返回簽名 */private function createSign ($paramArr,$apiKey) {    ksort($paramArr);    $sign='';
    foreach ($paramArr as $key => $val) {        if ($key != '' && $val != '') {            $sign .= $key."=".$val."&";        }    }    $sign=rtrim($sign,"&");    $sign.=$apiKey;    $sign=strtolower($sign);    $sign = md5($sign);    return $sign;}

簽名校驗(yàn):

/* * @desc 簽名校驗(yàn) * @param $token string 服務(wù)端分配的標(biāo)識(shí)(不同客戶(hù)端需使用不同的標(biāo)識(shí))?*?@param?$timestamp?string?時(shí)間戳,UTC時(shí)間,以北京時(shí)間東八區(qū)(+8)為準(zhǔn)?*?@param?$sign?string?簽名 * @param $privatekey string 私鑰 * @param $data 業(yè)務(wù)參數(shù)json格式 * @return bool */private function checkAuth($token,$timestamp,$sign,$privatekey,$data){        //參數(shù)判斷        if(empty($token)){????????????show(10001,'token不能為空!');        }                if(empty($timestamp)){????????????show(10002,'時(shí)間戳不能為空!');        }                if(empty($data)){????????????show(10004,'業(yè)務(wù)參數(shù)不能為空!');        }                if(empty($sign)){????????????show(10006,'簽名不能為空!');        }                if(empty($privatekey)){????????????show(10007,'私鑰不能為空!');        }        //時(shí)間校驗(yàn)????????$expire_second=config('expire_second');        $timestamp_t=$timestamp+$expire_second;        if($timestamp_t<time()){?????????????show(10008,'請(qǐng)求已經(jīng)過(guò)期!');        }        //系統(tǒng)參數(shù)        $paramArr=array(            'token'=>$token,????????????'timestamp'=>$timestamp,            'data'=>$data,        );
        //按規(guī)則拼接為字符串????????$str?=?$this->createSign($paramArr,$this->privatekey);?        if($str != $this->sign){?????????????show(10009,'驗(yàn)簽錯(cuò)誤!');        }        return true;    }

拒絕重復(fù)調(diào)用:客戶(hù)端第一次訪(fǎng)問(wèn)時(shí),將簽名sign存放到緩存服務(wù)器中,超時(shí)時(shí)間設(shè)定為跟時(shí)間戳的超時(shí)時(shí)間一致,二者時(shí)間一致可以保證無(wú)論在timestamp限定時(shí)間內(nèi)還是外 URL都只能訪(fǎng)問(wèn)一次。如果有人使用同一個(gè)URL再次訪(fǎng)問(wèn),如果發(fā)現(xiàn)緩存服務(wù)器中已經(jīng)存在了本次簽名,則拒絕服務(wù)。如果在緩存中的簽名失效的情況下,有人使用同一個(gè)URL再次訪(fǎng)問(wèn),則會(huì)被時(shí)間戳超時(shí)機(jī)制攔截。這就是為什么要求時(shí)間戳的超時(shí)時(shí)間要設(shè)定為跟時(shí)間戳的超時(shí)時(shí)間一致。拒絕重復(fù)調(diào)用機(jī)制確保URL被別人截獲了也無(wú)法使用(如抓取數(shù)據(jù))。

/** * @desc 限制請(qǐng)求接口次數(shù) * @return bool */private?function?ask_count(){    $client_ip = $this->sys_get_client_ip();    $ask_url = $this->sys_GetCurUrl();    //限制次數(shù)????$limit_num?=?config('api_ask_limit');?    //有效時(shí)間內(nèi),單位:秒????$limit_time?=?config('api_ask_time');?    $now_time = time();    $valid_time = $now_time - $limit_time;????$ipwhere['ip_name']?=?$client_ip;    $ipwhere['ask_url'] = $ask_url;????$ipwhere['creatime']?=?array('>=',date('Y-m-d?H:i:s',$valid_time));????$check_result?=?Db::table('log_ip_ask')->where($ipwhere)->count();??    if($check_result !=='0'){          if($check_result >= $limit_num){              show(10010,'已經(jīng)超出了限制次數(shù)!');        }  ????}????????//執(zhí)行插入    $add_data = array(        'ip_name'=>$client_ip,        'ask_url'=>$ask_url,        'creatime'=>date('Y-m-d H:i:s',time())    );????$result?=?Db::table('log_ip_ask')->insert($add_data);    if($result===false){?????????show(10011,'限制次數(shù)寫(xiě)入記錄失??!');    }????    return true;}
/** * 獲取客戶(hù)端IP地址 * @param integer $type 返回類(lèi)型 0 返回IP地址 1 返回IPV4地址數(shù)字 * @param boolean $adv 是否進(jìn)行高級(jí)模式獲?。ㄓ锌赡鼙粋窝b)  * @return mixed */private function sys_get_client_ip($type = 0,$adv=false) {    $type = $type ? 1 : 0;    static $ip  =   NULL;    if ($ip !== NULL) return $ip[$type];    if($adv){        if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {            $arr    =   explode(',', $_SERVER['HTTP_X_FORWARDED_FOR']);            $pos    =   array_search('unknown',$arr);            if(false !== $pos) unset($arr[$pos]);            $ip     =   trim($arr[0]);        }elseif (isset($_SERVER['HTTP_CLIENT_IP'])) {            $ip     =   $_SERVER['HTTP_CLIENT_IP'];        }elseif (isset($_SERVER['REMOTE_ADDR'])) {            $ip     =   $_SERVER['REMOTE_ADDR'];        }    }elseif (isset($_SERVER['REMOTE_ADDR'])) {        $ip = $_SERVER['REMOTE_ADDR'];    }    // IP地址合法驗(yàn)證    $long = sprintf("%u",ip2long($ip));    $ip   = $long ? array($ip, $long) : array('0.0.0.0', 0);    return $ip[$type];}
/** * @desc php獲取當(dāng)前訪(fǎng)問(wèn)的完整url地址 * @return string */private function sys_GetCurUrl() {    $url = 'http://';    if (isset ( $_SERVER ['HTTPS'] ) && $_SERVER ['HTTPS'] == 'on') {        $url = 'https://';    }    if ($_SERVER ['SERVER_PORT'] != '80') {        $url .= $_SERVER ['HTTP_HOST'] . ':' . $_SERVER ['SERVER_PORT'] . $_SERVER ['REQUEST_URI'];    } else {        $url .= $_SERVER ['HTTP_HOST'] . $_SERVER ['REQUEST_URI'];    }    return $url;}

非法ip限制訪(fǎng)問(wèn):此處的限制一般用在服務(wù)器間的接口調(diào)用

// 允許訪(fǎng)問(wèn)的IP列表        private $ip_allow = array(????????'192.168.0.111',????????'192.168.0.112',        '192.168.0.113',    );
   /**     * @desc 非法IP限制訪(fǎng)問(wèn)     * @param array $config     * @return bool     */   private function illegalip(){        if(!$this->ip_limit){            return true;        }        $remote_ip = get_client_ip();        if(in_array($remote_ip, $ip_allow)){            return true;        }        return false;    }

傳輸安全HTTPS

互聯(lián)網(wǎng)發(fā)展到今天,大家越來(lái)越重視自己的隱私,各大公司也越來(lái)越重視數(shù)據(jù)的安全。傳輸過(guò)程中的數(shù)據(jù)安全解決方案主要是“HTTPS”,能夠有效防止中間人攻擊等。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-702046.html

到了這里,關(guān)于PHP 如何設(shè)計(jì)一個(gè)高安全的電商平臺(tái):淘寶/京東商品類(lèi)API封裝接口的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶(hù)投稿,該文觀(guān)點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 淘寶、抖音、視頻號(hào)直播電商“賽馬”

    淘寶、抖音、視頻號(hào)直播電商“賽馬”

    經(jīng)過(guò)多年發(fā)展,貨架電商和社交電商在當(dāng)下已是一片紅海,因此,淘寶、京東、拼多多API接口等電商巨頭為尋求新的增長(zhǎng),紛紛另辟蹊徑,開(kāi)始在異域探索。而由于用戶(hù)如今的購(gòu)物需求已經(jīng)發(fā)生了天翻地覆的變化,于是,乘著短視頻東風(fēng)的直播電商開(kāi)始代替?zhèn)鹘y(tǒng)電商,成為了

    2024年02月04日
    瀏覽(24)
  • ChatGPT電商應(yīng)用:制作淘寶標(biāo)題

    ChatGPT電商應(yīng)用:制作淘寶標(biāo)題

    正文共? 845 字,閱讀大約需要? 6 ?分鐘 零售/電商人群必備技巧,您將在6分鐘后獲得以下超能力: 批量生成商品標(biāo)題 Beezy評(píng)級(jí)?:A級(jí) *經(jīng)過(guò)尋找和一段時(shí)間的學(xué)習(xí),一部分人能掌握。主要提升效率并增強(qiáng)自身技能。 推薦人? |??Yolanda ? 編輯者? |? ? ??R amy ●此圖片由Lex

    2024年02月09日
    瀏覽(20)
  • 畢業(yè)設(shè)計(jì)-基于協(xié)同過(guò)濾算法的電商平臺(tái)推薦系統(tǒng)

    畢業(yè)設(shè)計(jì)-基于協(xié)同過(guò)濾算法的電商平臺(tái)推薦系統(tǒng)

    目錄 前言 課題背景和意義 實(shí)現(xiàn)技術(shù)思路 一、文獻(xiàn)綜述 二、基于用戶(hù)協(xié)同過(guò)濾推薦系統(tǒng)算法 三、實(shí)證分析 四、總結(jié) 實(shí)現(xiàn)效果圖樣例 最后 ? ? ??大四是整個(gè)大學(xué)期間最忙碌的時(shí)光,一邊要忙著備考或?qū)嵙?xí)為畢業(yè)后面臨的就業(yè)升學(xué)做準(zhǔn)備,一邊要為畢業(yè)設(shè)計(jì)耗費(fèi)大量精力。近幾

    2024年02月08日
    瀏覽(24)
  • 淘寶API接口:提高電商運(yùn)營(yíng)效率與用戶(hù)體驗(yàn)的利器(淘寶API接口使用指南)

    淘寶API接口:提高電商運(yùn)營(yíng)效率與用戶(hù)體驗(yàn)的利器(淘寶API接口使用指南)

    淘寶API接口:提高電商運(yùn)營(yíng)效率與用戶(hù)體驗(yàn)的利器 隨著電商行業(yè)的快速發(fā)展,淘寶作為國(guó)內(nèi)最大的電商平臺(tái)之一,不斷探索和創(chuàng)新,以滿(mǎn)足不斷變化的用戶(hù)需求和商家需求。其中,淘寶API接口便是其創(chuàng)新的一個(gè)重要方面。本文將深入探討淘寶API接口的作用、功能、優(yōu)勢(shì)以及使

    2024年02月10日
    瀏覽(25)
  • 如何使用谷歌巴德(Google Bard PaLM2)設(shè)計(jì)一個(gè)自助分析的報(bào)告平臺(tái) API?

    目錄 如何使用谷歌巴德(Google Bard PaLM2)設(shè)計(jì)一個(gè)自助分析的報(bào)告平臺(tái) API?

    2024年02月16日
    瀏覽(38)
  • 高防CDN如何保護(hù)電商平臺(tái)的在線(xiàn)支付系統(tǒng)安全

    高防CDN如何保護(hù)電商平臺(tái)的在線(xiàn)支付系統(tǒng)安全?隨著移動(dòng)互聯(lián)網(wǎng)的快速發(fā)展,越來(lái)越多的用戶(hù)選擇在手機(jī)上進(jìn)行購(gòu)物和支付。這種形式的便利性和靈活性推動(dòng)了電商平臺(tái)的發(fā)展,但同時(shí)也給電商平臺(tái)的安全帶來(lái)了新的挑戰(zhàn)。尤其是在線(xiàn)支付系統(tǒng),由于其涉及用戶(hù)的金融信息,

    2024年02月07日
    瀏覽(94)
  • 電商淘寶補(bǔ)單系統(tǒng)源碼程序的開(kāi)發(fā)與部署

    一、電商淘寶補(bǔ)單的定義 ? ? ? 電商平臺(tái)業(yè)界人士常談到補(bǔ)單一詞,那么什么是他們常說(shuō)的電商淘寶補(bǔ)單呢?作為一個(gè)入門(mén)級(jí)別的電商小白需要看一看了解了解。 ? ? ?電商補(bǔ)單是指根據(jù)平臺(tái)算法和每日訂單計(jì)劃,根據(jù)基數(shù)觸發(fā)流量推薦,達(dá)到一定銷(xiāo)量的非自然操作。業(yè)界人

    2023年04月17日
    瀏覽(21)
  • 淘寶商品詳情API:助力電商提升用戶(hù)體驗(yàn)的利器

    淘寶商品詳情API是一款強(qiáng)大的工具,可以幫助電商提升用戶(hù)體驗(yàn)。通過(guò)這個(gè)API,商家可以獲取淘寶平臺(tái)上的商品詳情信息,包括商品標(biāo)題、描述、價(jià)格、銷(xiāo)量等。這些信息對(duì)于商家來(lái)說(shuō)非常重要,因?yàn)樗鼈兛梢杂糜诙喾N目的,例如在自家的網(wǎng)站或應(yīng)用中展示相關(guān)商品,進(jìn)行數(shù)

    2024年02月02日
    瀏覽(30)
  • ssm基于微信小程序的二手電商平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)(程序+開(kāi)題)

    ssm基于微信小程序的二手電商平臺(tái)設(shè)計(jì)與實(shí)現(xiàn)(程序+開(kāi)題)

    本系統(tǒng)(程序 + 源碼)帶文檔 lw 萬(wàn)字以上 文末可獲取一份本項(xiàng)目的 java 源碼和數(shù)據(jù)庫(kù)參考。 研究背景: 隨著互聯(lián)網(wǎng)的普及和電子商務(wù)的快速發(fā)展,二手交易市場(chǎng)也逐漸興起。然而,傳統(tǒng)的二手交易平臺(tái)存在著信息不對(duì)稱(chēng)、交易安全性低等問(wèn)題,給買(mǎi)賣(mài)雙方帶來(lái)了困擾。因此

    2024年01月16日
    瀏覽(22)
  • 基于Java+SpringBoot+Vue前后端分離農(nóng)產(chǎn)品電商平臺(tái)設(shè)計(jì)和實(shí)現(xiàn)

    基于Java+SpringBoot+Vue前后端分離農(nóng)產(chǎn)品電商平臺(tái)設(shè)計(jì)和實(shí)現(xiàn)

    博主介紹 : ? 全網(wǎng)粉絲30W+,csdn特邀作者、博客專(zhuān)家、CSDN新星計(jì)劃導(dǎo)師、Java領(lǐng)域優(yōu)質(zhì)創(chuàng)作者,博客之星、掘金/華為云/阿里云/InfoQ等平臺(tái)優(yōu)質(zhì)作者、專(zhuān)注于Java技術(shù)領(lǐng)域和學(xué)生畢業(yè)項(xiàng)目實(shí)戰(zhàn),高校老師/講師/同行前輩交流 ? 主要內(nèi)容: SpringBoot、Vue、SSM、HLMT、Jsp、PHP、Nodejs、P

    2024年02月20日
    瀏覽(25)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包