Maison >interface Web >Questions et réponses frontales >Comment implémenter la fonction de vérification du code de vérification dans nodejs

Comment implémenter la fonction de vérification du code de vérification dans nodejs

PHPz
PHPzoriginal
2023-04-17 16:41:111429parcourir

Avec le développement rapide d'Internet, les problèmes de sécurité ont retenu l'attention des utilisateurs et des développeurs. La technologie CAPTCHA est l’un des mécanismes de défense les plus courants actuellement disponibles. En tant que langage de développement côté serveur efficace, Node.js peut également implémenter la vérification du code de vérification. Ce qui suit présente comment Node.js implémente la vérification du code de vérification.

1. Qu'est-ce qu'un code de vérification ?

Le Captcha est une technique de défense contre les programmes automatisés, souvent utilisés dans les applications Web ou les systèmes informatiques. Le code de vérification peut être une image, un chiffre ou une lettre, ou une simple question mathématique. En remplissant le code de vérification correct, l'utilisateur peut prouver qu'il est une personne réelle et non un programme automatisé.

2. Étapes pour implémenter la vérification du code de vérification dans Node.js

  1. Installez le package npm nécessaire : nous devons installer un package npm appelé captcha-gen, qui peut nous aider à générer des images de code de vérification. Vous pouvez utiliser la commande suivante pour installer :
npm install captcha-gen
  1. Générer des images de code de vérification : Il est très simple d'utiliser le package captcha-gen pour générer des images de code de vérification. Il nous suffit d'appeler require('captcha-gen'), puis d'utiliser la fonction qu'elle renvoie comme fonction middleware. Voici l'exemple de code :
const express = require('express');
const captcha = require('captcha-gen');

let app = express();

app.use((req, res, next) => {
    let cap = captcha.create({ width: 120, height: 50 });
    res.type('svg');
    res.send(cap.svg());
});

Ici, nous utilisons le framework Express.js et renvoyons l'image du code de vérification générée par captcha-gen au navigateur au format SVG.

  1. Vérifiez le code de vérification saisi par l'utilisateur : après avoir reçu le code de vérification soumis par l'utilisateur, nous devons vérifier si le contenu saisi est le même que le contenu de l'image du code de vérification. Dans Node.js, vous pouvez utiliser le package npm node-canvas pour y parvenir. Voici l'exemple de code :
const Canvas = require('canvas');

function verifyCode(code, userInput) {
    let c = new Canvas(100, 50);
    let ctx = c.getContext('2d');
    ctx.font = '30px Impact';
    ctx.fillStyle = '#fff';
    ctx.fillRect(0, 0, 100, 50);
    ctx.fillStyle = '#000';
    ctx.fillText(code, 10, 35);
    let imageData = ctx.getImageData(0, 0, 100, 50);
    let pixels = imageData.data;
    for (let i = 0; i < pixels.length; i += 4) {
        pixels[i] = pixels[i + 1] = pixels[i + 2] = (pixels[i] + pixels[i + 1] + pixels[i + 2]) / 3;
    }
    let sum = 0;
    for (let i = 0; i < pixels.length; i++) {
        sum += pixels[i];
    }
    sum = sum / pixels.length;
    let res = 0;
    for (let i = 0; i < userInput.length; i++) {
        res += userInput[i].charCodeAt(0);
    }
    return (sum - res) % 256 === 0;
}

Dans le code ci-dessus, nous utilisons Canvas pour créer un canevas de taille 100*50 et y dessiner l'image du code de vérification. Utilisez ensuite getImageData() pour extraire les données et effectuer un simple processus de moyenne sur la valeur RVB de chaque pixel. Enfin, le code de vérification saisi par l'utilisateur est converti en code ASCII et additionné, et comparé à la valeur moyenne des pixels. S'ils sont identiques, cela signifie que le code de vérification saisi par l'utilisateur est correct.

3. Résumé

Grâce à la méthode ci-dessus, nous pouvons implémenter la vérification du code de vérification côté serveur Node.js pour améliorer la sécurité et la fiabilité des applications Web. Bien que Node.js ne soit pas le meilleur choix, il s'agit d'un langage de développement simple et efficace qui peut répondre aux besoins de la plupart des applications Web de petite et moyenne taille.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn