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
npm install 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()); });
Di sini, kami menggunakan rangka kerja Express.js dan mengembalikan imej kod pengesahan yang dijana oleh captcha-gen kepada penyemak imbas sebagai format SVG.
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; }
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!