返回

WEB 验证 - 原生 JS 实现滑块验证和拼图验证

前端

安全验证的必要性

在当今数字化的世界里,保护网站或应用免受恶意攻击至关重要。安全验证技术能够在用户登录、支付或执行其他敏感操作时,防止机器人和恶意软件的自动化攻击。验证码作为一种安全验证方式,可以帮助识别出真正的人类用户,从而保护网站或应用的安全。

原生 JS 实现滑块验证

滑块验证是一种常见的安全验证方式,它要求用户将滑块从一个位置拖动到另一个位置,以证明他们是真人而非机器人。让我们使用原生 JS 来实现一个滑块验证:

  1. 创建验证元素
const sliderContainer = document.getElementById("slider-container");
const slider = document.getElementById("slider");
  1. 监听滑动事件
sliderContainer.addEventListener("mousedown", startSlide);
  1. 滑动过程中移动滑块
function startSlide(e) {
  e.preventDefault();
  document.addEventListener("mousemove", moveSlider);
}
  1. 松开鼠标后停止移动滑块
document.addEventListener("mouseup", stopSlide);
  1. 验证滑块位置
function stopSlide() {
  const sliderPosition = slider.offsetLeft;
  if (sliderPosition >= endPosition) {
    // 验证通过
  } else {
    // 验证失败
  }
}

原生 JS 实现拼图验证

拼图验证要求用户将打乱的拼图碎片移动到正确的位置,以证明他们是真人而非机器人。让我们使用原生 JS 来实现一个拼图验证:

  1. 创建验证元素
const puzzleContainer = document.getElementById("puzzle-container");
const puzzlePieces = document.getElementsByClassName("puzzle-piece");
  1. 随机打乱拼图碎片
shufflePuzzlePieces();
  1. 监听拼图碎片点击事件
for (let i = 0; i < puzzlePieces.length; i++) {
  puzzlePieces[i].addEventListener("click", movePuzzlePiece);
}
  1. 移动拼图碎片到正确位置
function movePuzzlePiece(e) {
  const piece = e.target;
  const correctPosition = getCorrectPosition(piece);
  if (correctPosition) {
    // 移动拼图碎片到正确位置
  }
}
  1. 验证拼图完成情况
function checkPuzzleCompletion() {
  for (let i = 0; i < puzzlePieces.length; i++) {
    const piece = puzzlePieces[i];
    const correctPosition = getCorrectPosition(piece);
    if (piece.offsetLeft !== correctPosition.left || piece.offsetTop !== correctPosition.top) {
      return false;
    }
  }

  return true;
}

总结

通过原生 JS 实现的滑块验证和拼图验证,可以帮助您有效地保护网站或应用的安全,防止机器人和恶意软件的自动化攻击。这些验证码简单易用,且能够有效识别出真正的人类用户,从而确保您的网站或应用免受恶意侵害。