關于驗證碼,大家也許會有很多疑問,下面我總結(jié)了一些常見問題。
驗證碼(CAPTCHA)全稱為:Completely Automated Public Turing test to tell Computers and Humans Apart,全自動區(qū)分計算機和人類的圖靈測試,是一種區(qū)分用戶是計算機還是人的公共全自動程序。
結(jié)合我們的日常生活,我們發(fā)現(xiàn)驗證碼通常出現(xiàn)在登錄、注冊、領優(yōu)惠券、買游戲裝備、購票、發(fā)帖等場景。
驗證碼有效防止這種問題對某一個特定注冊用戶用特定程序暴力破解方式進行不斷的登陸嘗試,驗證碼很大程度上是用來判斷操作是人為還是機器人。
針對用戶產(chǎn)生的行為軌跡數(shù)據(jù)進行機器學習建模,結(jié)合訪問頻率、地理位置、歷史記錄等多個維度信息,快速、準確的返回人機判定結(jié)果,故而機器識別+模擬則不易通過。
1、數(shù)字、字母、中文組合:以圖片的形式展示字母、數(shù)字、中文混合組合,此類驗證碼一般由4位組成。
2、短信驗證碼:比較常見的驗證碼類型,用戶填好手機號碼,單擊獲取驗證碼后,手機上就能收到短信驗證碼。
3、行為驗證碼:智能無感、滑動拼圖、文字點選、語序點選、字體識別、空間推理等。
惡意短信驗證,屬于短信轟炸的一種,用戶端表現(xiàn)為高頻收到驗證短信內(nèi)容,用戶體驗差。對公司來講,大量的惡意短信驗證,增加公司運營成本,支付額外的短信運營費用。
防止這種惡意行為,方式之一是可以增加驗證碼校驗。發(fā)送短信驗證碼時,可要求通過驗證碼。同時在驗證碼請求錯誤時,要重置驗證碼,防止圖片驗證碼識別軟件嘗試多次識別。
前端代碼:
<script src="captcha.js?appid=xxx"></script>
<script>
kg.captcha({
// 綁定彈窗按鈕
button: "#captchaButton",
// 驗證成功事務處理
success: function (e) {
// 驗證成功,直接提交表單
// form1.submit();
console.log(e);
},
// 驗證失敗事務處理
failure: function (e) {
console.log(e);
},
// 點擊刷新按鈕時觸發(fā)
refresh: function (e) {
console.log(e);
}
});
</script>
<a id="captchaButton">點擊彈出驗證窗口</a>
后端代碼:
<?php
include "public/KgCaptchaSDK.php";
// 填寫你的 AppId,在應用管理中獲取
$appId = "xxx";
// 填寫你的 AppSecret,在應用管理中獲取
$appSecret = "xxx";
$request = new kgCaptcha($appId, $appSecret);
// 填寫應用服務域名,在應用管理中獲取
$request->appCdn = "https://cdn.kgcaptcha.com";
// 前端驗證成功后頒發(fā)的 token,有效期為兩分鐘
$request->token = $_POST["kgCaptchaToken"];
// 當安全策略中的防控等級為3時必須填寫
$request->userId = "kgCaptchaDemo";
// 請求超時時間,秒
$request->connectTimeout = 10;
$requestResult = $request->sendRequest();
if ($requestResult->code === 0) {
// 驗簽成功邏輯處理
echo "驗證通過";
} else {
// 驗簽失敗邏輯處理
echo "驗證失敗,錯誤代碼:{$requestResult->code}, 錯誤信息:{$requestResult->msg}";
}
SDK開源地址:KgCaptcha (KgCaptcha) · GitHub,順便做了一個演示:凱格行為驗證碼在線體驗
Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號