ホームページ >ウェブフロントエンド >フロントエンドQ&A >検証コード検証機能をnodejsに実装する方法

検証コード検証機能をnodejsに実装する方法

PHPz
PHPzオリジナル
2023-04-17 16:41:111432ブラウズ

インターネットの急速な発展に伴い、セキュリティ問題はユーザーや開発者から幅広い注目を集めています。 CAPTCHA テクノロジーは、現在利用可能な最も一般的な防御メカニズムの 1 つです。 Node.js は効率的なサーバーサイド開発言語として、検証コード検証を実装することもできます。以下では、Node.js が検証コード検証を実装する方法を紹介します。

1. 確認コードとは何ですか?

検証コードは、自動化されたプログラムに対する防御技術であり、Web アプリケーションやコンピューター システムでよく使用されます。確認コードには、画像、数字、文字、または簡単な数学の質問を使用できます。正しい確認コードを入力することで、ユーザーは自分が自動プログラムではなく本物であることを証明できます。

2. Node.js で検証コード検証を実装する手順

  1. 必要な npm パッケージをインストールします: captcha-gen という名前の npm パッケージをインストールする必要があります。認証コードの画像。次のコマンドを使用してインストールできます。
npm install captcha-gen
  1. 検証コード イメージの生成: captcha-gen パッケージを使用して検証コード イメージを生成するのは非常に簡単です。 require('captcha-gen') を呼び出して、それが返す関数をミドルウェア関数として使用するだけです。サンプル コードは次のとおりです。
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());
});

ここでは、Express.js フレームワークを使用し、captcha-gen によって生成された検証コード イメージを SVG 形式としてブラウザーに返します。

  1. ユーザーが入力した確認コードを確認する: ユーザーから確認コードの送信を受け取った後、入力された内容が確認コード画像の内容と同じかどうかを確認する必要があります。 Node.js では、node-canvas npm パッケージを使用してこれを実現できます。以下はサンプル コードです。
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;
}

上記のコードでは、Canvas を使用して 100*50 サイズのキャンバスを作成し、その中に検証コード イメージを描画します。次に getImageData() を使用してデータを取り出し、各ピクセルの RGB 値に対して単純な平均処理を実行します。最後に、ユーザーが入力した認証コードを ASCII コードに変換して合計し、平均ピクセル値と比較し、それらが同じであれば、ユーザーが入力した認証コードが正しいことになります。

3. 概要

上記の方法により、Node.js サーバー側で検証コード検証を実装し、Web アプリケーションのセキュリティと信頼性を向上させることができます。 Node.js は最良の選択ではありませんが、ほとんどの中小規模の Web アプリケーションのニーズを満たすことができるシンプルで効率的な開発言語です。

以上が検証コード検証機能をnodejsに実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。