penempatan selamat nodejs koa
May 27, 2023 pm 05:09 PMKata Pengantar
Node.js ialah persekitaran masa jalan JavaScript dipacu peristiwa yang sangat popular Ia dicirikan oleh kecekapan, kebolehskalaan dan merentas platform. Koa ialah rangka kerja web Node.js ringan yang menggunakan penjana ES6 untuk menjadikan penulisan kod tak segerak lebih ringkas. Dalam aplikasi sebenar, kita selalunya perlu menggunakan aplikasi Node.js Artikel ini akan memperkenalkan secara terperinci cara menggunakan aplikasi Koa dengan selamat.
HTTPS
Dalam persekitaran pengeluaran, kita harus menggunakan protokol HTTPS untuk memastikan keselamatan data. Jadi apabila menggunakan aplikasi Koa, kita mesti terlebih dahulu membuat aplikasi menyokong HTTPS.
Pertama, kami memerlukan sijil untuk nama domain Anda boleh menggunakan Let’s Encrypt untuk melaksanakan sijil HTTPS percuma. Untuk langkah khusus, sila rujuk artikel ini: [Gunakan Let's Encrypt untuk mendayakan HTTPS untuk aplikasi Node.js secara percuma](https://github.com/chemdemo/chemdemo.github.io/issues/11). Selepas permohonan sijil selesai, kita perlu menambah kod berikut pada skrip permulaan aplikasi:
const https = require('https'); const fs = require('fs'); const Koa = require('koa'); const app = new Koa(); const options = { key: fs.readFileSync('/etc/ssl/example.com.key'), cert: fs.readFileSync('/etc/ssl/example.com.crt'), }; https.createServer(options, app.callback()).listen(3000, () => { console.log('HTTPS Server listening on port 3000'); });
di mana, /etc/ssl/example.com.key
ialah laluan fail kunci peribadi sijil dan /etc/ssl/example.com.key
ialah kunci awam laluan fail sijil. https.createServer
Kaedah mencipta pelayan HTTPS berdasarkan konfigurasi sijil.
Cegah serangan DDos
Serangan DDos (Distributed Denial of Service) ialah cara biasa serangan rangkaian Penyerang akan menggunakan pelbagai kaedah untuk menundukkan pelayan kepada sejumlah besar permintaan, menyebabkan pelayan menjadi tidak tersedia.
Untuk mengelakkan serangan DDos, kami boleh menggunakan kaedah berikut:
Hadkan trafik permintaan
Menggunakan middleware koa-ratelimit, anda boleh mengehadkan kekerapan permintaan IP yang sama .
const Koa = require('koa'); const rateLimit = require('koa-ratelimit'); const app = new Koa(); app.use( rateLimit({ driver: 'memory', db: new Map(), duration: 60000, // 1分钟限制一次 errorMessage: '请求次数过于频繁,请稍后再试。', id: (ctx) => ctx.ip, headers: { remaining: 'Rate-Limit-Remaining', reset: 'Rate-Limit-Reset', total: 'Rate-Limit-Total', }, max: 100, // 一分钟最多请求 100 次 disableHeader: false, }) );
Sahkan sumber permintaan
Menggunakan perisian tengah koa-helmet boleh menambah beberapa pengepala keselamatan untuk mengukuhkan keselamatan, termasuk CSP (Dasar Keselamatan Kandungan), kawalan Prafetch DNS, penapisan XSS, dsb. Pada masa yang sama, kami boleh menggunakan perpustakaan pihak ketiga seperti geoip-lite untuk mendapatkan rantau IP sumber permintaan dan menyekat akses berdasarkan rantau tersebut.
const Koa = require('koa'); const helmet = require('koa-helmet'); const geoip = require('geoip-lite'); const app = new Koa(); app.use(helmet({ contentSecurityPolicy: false })); app.use((ctx, next) => { const ip = ctx.request.headers['x-forwarded-for'] || ctx.request.ip; const geo = geoip.lookup(ip); const allowedCountries = ['CN', 'US', 'JP']; if (!geo || allowedCountries.indexOf(geo.country) === -1) { ctx.throw(403, 'Access Denied'); } return next(); });
Gunakan perkhidmatan perlindungan DDos yang disediakan oleh penyedia perkhidmatan
Gunakan perkhidmatan perlindungan DDos pihak ketiga, seperti platform pecutan keselamatan yang disediakan oleh Alibaba Cloud, untuk mempertahankan secara berkesan daripada serangan DDos berskala besar.
Kekalkan keselamatan sistem
Amalan penyelenggaraan keselamatan tidak seharusnya hanya berhenti pada mencegah serangan DDos, tetapi harus meliputi reka bentuk keselamatan keseluruhan seni bina sistem.
Dalam aplikasi Node.js, terdapat beberapa jenis kerentanan biasa, seperti suntikan kod, skrip silang tapak (XSS), pemalsuan permintaan silang tapak (CSRF), dsb.
Untuk memastikan keselamatan sistem dengan berkesan, kami boleh mengambil langkah berikut:
Gunakan CSP
CSP ialah singkatan Dasar Keselamatan Kandungan Menggunakan CSP boleh menghalang kod dengan berkesan Serangan suntikan, serta beberapa serangan XSS.
Dalam aplikasi Koa, anda boleh menggunakan koa-helmet untuk menetapkan dasar CSP.
const Koa = require('koa'); const helmet = require('koa-helmet'); const app = new Koa(); app.use( helmet.contentSecurityPolicy({ directives: { defaultSrc: ["'self'"], scriptSrc: ["'self'", "'unsafe-inline'", 'cdn.example.com'], styleSrc: ["'self'", "'unsafe-inline'"], imgSrc: ["'self'", 'cdn.example.com'], connectSrc: [ "'self'", 'api.example.com', 'api.example.net', 'analytics.google.com', ], fontSrc: ["'self'", 'cdn.example.com'], }, }) );
Dalam contoh ini, kami melarang semua skrip dan gaya kecuali diri kami melalui CSP, sambil melonggarkan nama domain CDN yang berwibawa dan dipercayai serta nama domain Google Analitis. Kami juga boleh menentukan URL melalui atribut reportUri
Apabila pelanggaran CSP berlaku, laporan akan dihantar ke URL ini untuk pemprosesan seterusnya.
Menggunakan Helmet
Selain CSP, koa-helmet juga menyediakan banyak pilihan pengepala keselamatan lain, yang boleh meningkatkan keselamatan aplikasi Koa dengan sangat baik.
const Koa = require('koa'); const helmet = require('koa-helmet'); const app = new Koa(); app.use(helmet());
Selepas menggunakan perisian tengah topi keledar, kami tidak perlu menetapkan item konfigurasi setiap pengepala keselamatan, tetapi menggunakan item konfigurasi lalai yang dilaraskan. Item konfigurasi lalai ini termasuk kawalan CORS, penapisan XSS, dasar HSTS, kawalan cache HTTP, dll., yang boleh meningkatkan keselamatan aplikasi dengan banyak.
Gunakan koa-usual-bundle
koa-usual-bundle ialah koleksi konfigurasi umum untuk pembangunan keselamatan Node.js, yang mengandungi banyak penyelesaian pencegahan kerentanan biasa.
npm install --save koa-usual-bundle
Selepas pemasangan, sebelum memulakan aplikasi Koa, anda perlu memulakannya dengan konfigurasi koa-usual-bundle:
const Koa = require('koa'); const usual = require('koa-usual-bundle'); const app = new Koa(); usual(app);
Dalam contoh ini, kami akan menggunakan contoh app
biasa dan Koa Digabungkan bersama untuk menambah keselamatan pada aplikasi Koa.
Ringkasan
Dalam persekitaran pengeluaran, keselamatan ialah isu penting untuk aplikasi Node.js. Artikel ini memperkenalkan cara untuk menggunakan aplikasi Koa dengan selamat, termasuk menggunakan HTTPS untuk melindungi data, mencegah serangan DDos, mengambil langkah untuk mengekalkan keselamatan sistem, dsb. Walaupun langkah-langkah ini tidak mudah, dengan mengambil langkah-langkah ini, anda boleh memaksimumkan keselamatan aplikasi anda.
Atas ialah kandungan terperinci penempatan selamat nodejs koa. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Apa itu useeffect? Bagaimana anda menggunakannya untuk melakukan kesan sampingan?

Bagaimanakah kari bekerja di JavaScript, dan apakah faedahnya?

Bagaimanakah algoritma Rekonsiliasi React berfungsi?

Apakah fungsi pesanan yang lebih tinggi dalam JavaScript, dan bagaimana mereka boleh digunakan untuk menulis lebih banyak kod ringkas dan boleh diguna semula?

Bagaimana anda mengelakkan tingkah laku lalai di pengendali acara?

Apakah kelebihan dan kekurangan komponen terkawal dan tidak terkawal?

Apakah useContext? Bagaimana anda menggunakannya untuk berkongsi keadaan antara komponen?
