Pada masa kini, keselamatan aplikasi adalah penting. Mengamankan aplikasi Node.js melibatkan pelbagai amalan untuk melindungi daripada pelanggaran data, akses tanpa kebenaran dan kelemahan lain. Artikel ini meneroka langkah keselamatan utama untuk melindungi aplikasi Node.js anda, meliputi HTTPS, CORS, penyulitan data dan banyak lagi. Kami juga akan menyelami contoh praktikal untuk menunjukkan kepada anda cara teknik ini boleh dilaksanakan dengan berkesan.
Keselamatan adalah penting dalam aplikasi web untuk melindungi:
HTTPS (HyperText Transfer Protocol Secure) memastikan data yang dihantar antara pelayan dan pelanggan disulitkan. Begini cara untuk menyediakan HTTPS dalam aplikasi Node.js.
Anda boleh menggunakan alatan seperti OpenSSL untuk menjana sijil SSL:
openssl req -nodes -new -x509 -keyout server.key -out server.cert
Gunakan modul https dalam Node.js:
const https = require('https'); const fs = require('fs'); const express = require('express'); const app = express(); const options = { key: fs.readFileSync('server.key'), cert: fs.readFileSync('server.cert') }; https.createServer(options, app).listen(3000, () => { console.log("HTTPS Server running on port 3000"); });
CORS mengehadkan halaman web daripada membuat permintaan kepada domain selain daripada yang menyediakan halaman web. Ini membantu mencegah serangan Pemalsuan Permintaan Merentas Tapak (CSRF).
Anda boleh menggunakan pakej cors untuk menyediakan polisi CORS:
const cors = require('cors'); app.use(cors({ origin: 'https://trusted-domain.com' }));
Menyulitkan data sensitif sebelum menyimpan atau menghantarnya menambahkan lapisan keselamatan tambahan. Crypto ialah modul Node.js terbina dalam yang menyediakan kaedah penyulitan.
openssl req -nodes -new -x509 -keyout server.key -out server.cert
Menyimpan maklumat sensitif seperti kunci API dan bukti kelayakan pangkalan data dalam kod anda adalah berisiko. Sebaliknya, gunakan pembolehubah persekitaran dan perpustakaan seperti dotenv.
const https = require('https'); const fs = require('fs'); const express = require('express'); const app = express(); const options = { key: fs.readFileSync('server.key'), cert: fs.readFileSync('server.cert') }; https.createServer(options, app).listen(3000, () => { console.log("HTTPS Server running on port 3000"); });
const cors = require('cors'); app.use(cors({ origin: 'https://trusted-domain.com' }));
const crypto = require('crypto'); const algorithm = 'aes-256-cbc'; const key = crypto.randomBytes(32); const iv = crypto.randomBytes(16); function encrypt(text) { let cipher = crypto.createCipheriv(algorithm, Buffer.from(key), iv); let encrypted = cipher.update(text); encrypted = Buffer.concat([encrypted, cipher.final()]); return { iv: iv.toString('hex'), encryptedData: encrypted.toString('hex') }; } function decrypt(text) { let iv = Buffer.from(text.iv, 'hex'); let encryptedText = Buffer.from(text.encryptedData, 'hex'); let decipher = crypto.createDecipheriv(algorithm, Buffer.from(key), iv); let decrypted = decipher.update(encryptedText); decrypted = Buffer.concat([decrypted, decipher.final()]); return decrypted.toString(); } // Example usage const encrypted = encrypt("Sensitive data"); console.log("Encrypted:", encrypted); console.log("Decrypted:", decrypt(encrypted));
JWT (JSON Web Token) ialah cara yang padat dan selamat untuk menghantar maklumat antara pihak. Ia biasanya digunakan untuk pengesahan tanpa kewarganegaraan dalam API.
npm install dotenv
DB_USER=username DB_PASS=password
Penghadan kadar mengehadkan bilangan permintaan yang boleh dibuat oleh pengguna dalam jangka masa, mengurangkan serangan DDoS.
require('dotenv').config(); const dbUser = process.env.DB_USER; const dbPass = process.env.DB_PASS;
Pertimbangkan aplikasi perbankan dalam talian yang keselamatan adalah paling utama. Begini cara untuk melaksanakan amalan yang telah kita bincangkan:
Dengan melaksanakan amalan terbaik ini, anda boleh memastikan aplikasi anda kekal selamat daripada ancaman biasa.
Melindungi aplikasi Node.js ialah proses yang berterusan. Teknik yang diliputi—menggunakan HTTPS, menyediakan CORS, menyulitkan data, menggunakan pembolehubah persekitaran, melaksanakan pengesahan JWT dan menambah pengehadan kadar—adalah penting untuk melindungi apl anda daripada akses tanpa kebenaran dan pelanggaran data. Dengan menggabungkan kaedah ini, anda mencipta asas keselamatan yang teguh untuk aplikasi Node.js anda.
Atas ialah kandungan terperinci Panduan untuk Melindungi Aplikasi Node.js Anda. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!