Bagaimana untuk melaksanakan fungsi pengesahan kod pengesahan dalam nodejs

PHPz
Lepaskan: 2023-04-17 17:09:45
asal
1396 orang telah melayarinya

Dengan perkembangan pesat Internet, isu keselamatan telah mendapat perhatian yang meluas daripada pengguna dan pembangun. Teknologi CAPTCHA adalah salah satu mekanisme pertahanan yang paling biasa tersedia pada masa ini. Sebagai bahasa pembangunan sisi pelayan yang cekap, Node.js juga boleh melaksanakan pengesahan kod pengesahan. Berikut memperkenalkan cara Node.js melaksanakan pengesahan kod pengesahan.

1. Apakah itu kod pengesahan?

Captcha ialah teknik pertahanan terhadap program automatik, sering digunakan dalam aplikasi web atau sistem komputer. Kod pengesahan boleh berupa imej, nombor atau huruf, atau soalan matematik mudah. Dengan mengisi kod pengesahan yang betul, pengguna boleh membuktikan bahawa mereka adalah orang sebenar dan bukan program automatik.

2. Langkah untuk melaksanakan pengesahan kod pengesahan dalam Node.js

  1. Pasang pakej npm yang diperlukan: Kami perlu memasang pakej npm bernama captcha-gen, yang boleh membantu kami menjana Imej kod pengesahan. Anda boleh menggunakan arahan berikut untuk memasang:
npm install captcha-gen
Salin selepas log masuk
  1. Jana imej kod pengesahan: Sangat mudah untuk menggunakan pakej captcha-gen untuk menjana imej kod pengesahan. Kita hanya perlu memanggil require('captcha-gen'), dan kemudian gunakan fungsi yang ia kembalikan sebagai fungsi middleware. Berikut ialah kod sampel:
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());
});
Salin selepas log masuk

Di sini, kami menggunakan rangka kerja Express.js dan mengembalikan imej kod pengesahan yang dijana oleh captcha-gen kepada penyemak imbas sebagai format SVG.

  1. Sahkan kod pengesahan yang dimasukkan oleh pengguna: Selepas menerima penyerahan kod pengesahan daripada pengguna, kami perlu mengesahkan sama ada kandungan yang dimasukkan adalah sama dengan kandungan dalam imej kod pengesahan. Dalam Node.js, anda boleh menggunakan pakej npm node-canvas untuk mencapai ini. Berikut ialah kod sampel:
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;
}
Salin selepas log masuk

Dalam kod di atas, kami menggunakan Kanvas untuk mencipta kanvas bersaiz 100*50 dan melukis imej kod pengesahan di dalamnya. Kemudian gunakan getImageData() untuk mengeluarkan data dan melakukan proses purata mudah pada nilai RGB setiap piksel. Akhir sekali, kod pengesahan yang dimasukkan oleh pengguna ditukar kepada kod ASCII dan dijumlahkan, dan dibandingkan dengan nilai piksel purata Jika ia adalah sama, ini bermakna kod pengesahan yang dimasukkan oleh pengguna adalah betul.

3. Ringkasan

Melalui kaedah di atas, kami boleh melaksanakan pengesahan kod pengesahan pada bahagian pelayan Node.js untuk meningkatkan keselamatan dan kebolehpercayaan aplikasi web. Walaupun Node.js bukanlah pilihan terbaik, ia adalah bahasa pembangunan yang mudah dan cekap yang boleh memenuhi keperluan kebanyakan aplikasi web bersaiz kecil dan sederhana.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan fungsi pengesahan kod pengesahan dalam nodejs. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!