一、基礎實現
在實現向右滑動完成驗證之前,我們需要先了解基礎實現原理。可以通過監聽鼠標移動事件,獲取到鼠標在屏幕上的起始位置,以及鼠標在移動過程中的位移,最後根據位移判斷驗證是否成功。
function verification() {
var slider = document.getElementById("slider");
var icon = document.getElementById("icon");
var label = document.getElementById("label");
var originX = 0;
var originY = 0;
var currentX = 0;
// 鼠標按下事件
slider.onmousedown = function(e) {
originX = e.clientX;
originY = e.clientY;
document.onmousemove = function(e) {
var offsetX = e.clientX - originX;
var offsetY = e.clientY - originY;
if (offsetX >= 200) {
icon.style.display = "none";
label.innerHTML = "驗證通過";
slider.className = "slide right";
}
slider.style.left = currentX + offsetX + "px";
}
document.onmouseup = function() {
document.onmousemove = null;
document.onmouseup = null;
currentX = parseInt(slider.style.left);
}
}
}
上面的代碼中,我們通過獲取slider元素,監聽鼠標按下、移動、抬起事件,控制slider的位置和顯示狀態,來實現向右滑動完成驗證的基礎功能。
二、通用優化
基礎實現只是實現了驗證功能,但是在實際應用中,我們需要對其進行一些通用的優化。
首先,在手機端通常會出現橫滑頁面的情況,我們需要解決橫滑與驗證功能的衝突,可以通過監聽touch事件並阻止事件傳播來實現:
slider.ontouchstart = function(e) {
e.preventDefault();
...
}
其次,在驗證過程中,可以添加動畫效果,增強用戶體驗。我們可以在驗證成功時,通過transition屬性來實現slider的平滑滑動效果:
.slide.right {
left: 200px;
transition: 0.3s ease;
}
此外,我們還可以添加驗證碼失效的功能。當用戶在規定的時間內未能完成驗證,就提示用戶重新獲取驗證碼。
三、安全性考慮
考慮到諸多惡意行為,我們需要在實現向右滑動完成驗證的過程中保障用戶的安全性。
1、防刷的實現
我們可以在驗證完成之後,將驗證結果發送給後台,後台進行驗證,並返回驗證結果。後台可以通過一些手段來判斷是否是機器人,比如通過IP地址、UA信息等。如果後台檢測到有大量的請求,則可以將其視為惡意請求,拒絕服務。
2、驗證碼的生成與隨機性
驗證碼的生成應具有足夠的隨機性,否則有可能被惡意破解。我們一般使用隨機數來生成驗證碼(可應用於數字或字符的驗證碼),或使用圖片驗證碼,能夠增大驗證碼的難度。
3、驗證時效的設置
為了避免攻擊者使用截獲並利用驗證碼的方式,我們一般會設置驗證碼的有效期限。
四、實際應用
向右滑動完成驗證已經成為了現在各類網站和App中常見的一種功能。比如淘寶、支付寶、微信等都已經採用了這種驗證方式,而且在體驗上很優秀,能夠一定程度上保護用戶賬號的安全。
下面我們以淘寶為例,看一下其實際應用中的效果實現。
// 淘寶登錄頁的js代碼
$('#nocaptcha').nc({
appId: 'xxxx',
scene: 'register',
token: '${token}',
customWidth: 400,
trans: {
key1: "",
key2: "",
key3: "",
fail_c: "拖動滑塊將懸浮圖像正確拼合"
},
callback: function (data) {
if (data.code == '200') {
// 驗證成功邏輯
}
}
})
淘寶的實現中,使用了Token傳輸機制以及語言包的方式,來增強安全性和用戶體驗。Token是一串字符串,是後台用來驗證請求是否合法的標誌,必須要攜帶Token才能進行驗證。而語言包則是提供了多種語言的驗證提示,方便不同國家地區的用戶使用。
五、策略更新
由於驗證方式在一段時間內會被攻擊者逐漸破解,我們需要不斷更新客戶端和服務器端的驗證策略,來增強安全性,提高用戶體驗。
我們可以使用一些前沿的技術,比如使用AI進行用戶識別等方式,來進行大規模和細節化的操作識別,以增加攻擊者攻擊的難度。
六、總結
向右滑動完成驗證已經成為了現在各類網站和App中常見的一種驗證方式,通過本文的講解,我們了解了實現向右滑動完成驗證的基礎實現、通用優化及其安全性考慮、實際應用和策略更新等方面,希望這對於大家學習和應用有所幫助。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/237090.html
微信掃一掃
支付寶掃一掃