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

搜索
博主信息
博文 16
粉絲 0
評(píng)論 0
訪(fǎng)問(wèn)量 9639
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
KgCaptcha驗(yàn)證的那些事
原創(chuàng)
457人瀏覽過(guò)

01 前言

針對(duì)KgCaptcha驗(yàn)證碼,當(dāng)用戶(hù)點(diǎn)擊完成驗(yàn)證,系統(tǒng)進(jìn)行風(fēng)險(xiǎn)評(píng)估,根據(jù)風(fēng)險(xiǎn)程度進(jìn)行驗(yàn)證,并返回結(jié)果。下面是我對(duì)前/后端驗(yàn)證的分析。

02 代碼接入

HTML代碼

  1. <script src="captcha.js?appid=xxx"></script>
  2. <script>
  3. kg.captcha({
  4. // 綁定元素,驗(yàn)證框顯示區(qū)域
  5. bind: "#captchaBox",
  6. // 驗(yàn)證成功事務(wù)處理
  7. success: function(e) {
  8. console.log(e);
  9. },
  10. // 驗(yàn)證失敗事務(wù)處理
  11. failure: function(e) {
  12. console.log(e);
  13. },
  14. // 點(diǎn)擊刷新按鈕時(shí)觸發(fā)
  15. refresh: function(e) {
  16. console.log(e);
  17. }
  18. });
  19. </script>
  20. <div id="captchaBox">載入中 ...</div>

PHP代碼

  1. <?php
  2. include "public/KgCaptchaSDK.php";
  3. // 填寫(xiě)你的 AppId,在應(yīng)用管理中獲取
  4. $appId = "xxx";
  5. // 填寫(xiě)你的 AppSecret,在應(yīng)用管理中獲取
  6. $appSecret = "xxx";
  7. $request = new kgCaptcha($appId, $appSecret);
  8. // 填寫(xiě)應(yīng)用服務(wù)域名,在應(yīng)用管理中獲取
  9. $request->appCdn = "https://cdn.kgcaptcha.com";
  10. // 前端驗(yàn)證成功后頒發(fā)的 token,有效期為兩分鐘
  11. $request->token = $_POST["kgCaptchaToken"];
  12. // 當(dāng)安全策略中的防控等級(jí)為3時(shí)必須填寫(xiě)
  13. $request->userId = "kgCaptchaDemo";
  14. // 請(qǐng)求超時(shí)時(shí)間,秒
  15. $request->connectTimeout = 10;
  16. $requestResult = $request->sendRequest();
  17. if ($requestResult->code === 0) {
  18. // 驗(yàn)簽成功邏輯處理
  19. echo "驗(yàn)證通過(guò)";
  20. } else {
  21. // 驗(yàn)簽失敗邏輯處理
  22. echo "驗(yàn)證失敗,錯(cuò)誤代碼:{$requestResult->code}, 錯(cuò)誤信息:{$requestResult->msg}";
  23. }

03 驗(yàn)證/驗(yàn)簽分析

時(shí)間監(jiān)測(cè)

  1. 頁(yè)面載入離當(dāng)前時(shí)間超過(guò)20分鐘,有可能客戶(hù)端時(shí)間不正確
  2. 第一次點(diǎn)擊和最后一次點(diǎn)時(shí)時(shí)間過(guò)長(zhǎng),秒
  3. 第一次點(diǎn)擊和最后一次點(diǎn)時(shí)時(shí)間過(guò)快,秒
  1. if self.auth.data["level"] > 1 and self.POST["type"] not in (10, 11, 12, 13, 14, 15): # 等級(jí),字體識(shí)別和空間推理單次點(diǎn)擊不檢測(cè)間隔時(shí)間
  2. inter = (5, 0.1) if self.POST["type"] in (1, 2) else (12, 0.2) # 設(shè)置拼圖/文字點(diǎn)擊兩種不同類(lèi)型間隔時(shí)間
  3. if abs(self.POST["load"] - self.kg["RUN_TIME"][3]) > self.timeout: # 超時(shí)時(shí)間,JS載入時(shí)間離當(dāng)時(shí)時(shí)間,秒
  4. return self.r_code(code=30003)
  5. if abs(self.POST["end"] - self.POST["start"]) > inter[0]:
  6. return self.r_code(code=30004)
  7. if abs(self.POST["end"] - self.POST["start"]) < inter[1]:
  8. return self.r_code(code=30005)

來(lái)路域名檢測(cè)

  1. if not self.kg["HTTP_REFERER"]: return self.r_code(30006) # 域名不合法,無(wú)法獲取來(lái)路域名
  2. if not self.auth.domain_auth(): return self.r_code(30007) # 來(lái)源域名未授權(quán)

驗(yàn)證次數(shù)限制檢測(cè)

  1. excess = self.auth.excess(1)
  2. if excess:
  3. return self.r_code(code=[30016, 30017, 30018][excess - 1])

應(yīng)用有效時(shí)間檢測(cè)

  1. validity = self.auth.app_validity()
  2. if validity[0] == 1: return self.r_code(30009) # 授權(quán)未開(kāi)始
  3. if validity[0] == 2: return self.r_code(30010) # 授權(quán)已結(jié)束
  4. if self.auth.app_state(): return self.r_code(30011) # 當(dāng)前應(yīng)用/域名被禁用

客戶(hù)端IP地址

  1. if not is_ip(self.kg["HTTP_ADDR"]): return self.r_code(30012) # 無(wú)法獲取IP地址
  2. ip_list = self.auth.ip_list()
  3. if ip_list == 1: return self.r_code(30013) # 黑名單
  4. if ip_list == 2: return self.r_code(30014) # 非白名單

用戶(hù)在X分鐘內(nèi)錯(cuò)誤記錄數(shù)超過(guò)n條

  1. if self.auth.data["level"] > 0:
  2. if not self.auth.risk(): return self.r_code(30015) # x 分鐘內(nèi)超過(guò) n 條錯(cuò)誤記錄

04 最后

SDK開(kāi)源地址:KgCaptcha (KgCaptcha) · GitHub,順便做了一個(gè)演示:凱格行為驗(yàn)證碼在線(xiàn)體驗(yàn)

本博文版權(quán)歸博主所有,轉(zhuǎn)載請(qǐng)注明地址!如有侵權(quán)、違法,請(qǐng)聯(lián)系admin@php.cn舉報(bào)處理!
全部評(píng)論 文明上網(wǎng)理性發(fā)言,請(qǐng)遵守新聞評(píng)論服務(wù)協(xié)議
0條評(píng)論
作者最新博文
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線(xiàn)php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)

  • 登錄PHP中文網(wǎng),和優(yōu)秀的人一起學(xué)習(xí)!
    全站2000+教程免費(fèi)學(xué)