Jika Anda baru memulai pengembangan web atau perjalanan Node.js, Anda mungkin tidak menyadari betapa pentingnya mengamankan aplikasi Anda.

Express.js memberikan solusi yang berkinerja baik untuk membangun aplikasi web backend, tetapi keamanannya kurang. Saat Anda membuat aplikasi web, Anda memerlukan tindakan keamanan yang memadai untuk melindungi data pengguna Anda.

Untungnya, ada beberapa metode yang dapat Anda ambil untuk meningkatkan keamanan aplikasi Express.js Anda. Semua tip ini akan membantu meningkatkan keamanan aplikasi Anda menggunakan pendekatan yang berbeda.

Menyiapkan Aplikasi Express.js

Mulailah dengan menyiapkan demo Server web Express.js menggunakan npm, Manajer Paket Node. Buat folder proyek secara lokal dan ubah direktori ke folder itu di terminal Anda.

mkdir proyek ekspres
proyek cd express

Selanjutnya, buat a package.json file di direktori root.

npm init -y

Silakan dan instal Express.js.

npm instal ekspres

Terakhir, buat a server.js file di direktori root folder proyek Anda, dan tambahkan kode berikut untuk menyiapkan server web dasar.

instagram viewer
const mengungkapkan = memerlukan("cepat")
const aplikasi = ekspres()
const PORT = proses.env. PELABUHAN || 5000

aplikasi.dapatkan("/", (req, res) => {
res.json("Halo Dunia!")
})

app.listen (PORT, () => {
menghibur.catatan(`Memulai server aktif http://localhost:${PORT}`)
})

Mulai server dengan perintah ini:

simpul server.js

Anda sekarang siap menjelajahi beberapa tindakan yang dapat Anda gunakan untuk mengamankan aplikasi Express.js Anda.

1. Mengamankan Aplikasi Express.js Menggunakan Helm

Helm adalah middleware Node.js yang membantu mengamankan aplikasi sisi server dengan mengatur berbagai header keamanan HTTP. Tajuk ini memberikan mekanisme pertahanan penting terhadap kerentanan keamanan backend umum, seperti cross-site scripting (XSS), cross-site request forgery (CSRF), dan masih banyak lagi.

Express.js tidak mengonfigurasi header keamanan HTTP secara default, meninggalkan potensi kelemahan keamanan yang memperlihatkan header yang berpotensi sensitif. Dengan menggunakan informasi ini, pelaku jahat mungkin dapat memperoleh akses tidak sah atau mengganggu aplikasi Anda.

Helm bertindak sebagai perisai vital, memastikan bahwa respons HTTP aplikasi mengadopsi langkah-langkah keamanan yang diperlukan, secara signifikan mengurangi permukaan serangan potensial.

Menjelajahi Keamanan Aplikasi Express.js Tanpa Helm

Dengan server berjalan, periksa header aplikasi. Silakan dan buat permintaan HTTP ke API menggunakan Postman atau klien lain yang menampilkan tajuk respons. Sebagian besar browser menyertakan seperangkat alat pengembang yang memungkinkan Anda melakukannya.

Saat Anda mengirim permintaan ke titik akhir rumah, Anda harus mengamati hasil serupa di Header bagian dari tanggapan dalam Postman.

Perhatikan X-Didukung-Oleh tajuk. Biasanya, teknologi backend menggunakan tajuk ini untuk menunjukkan kerangka kerja atau perangkat lunak lain yang menjalankan aplikasi web. Anda biasanya harus menghapus X-Didukung-Oleh header di lingkungan produksi.

Dengan melakukannya, Anda akan mencegah calon penyerang mendapatkan informasi berharga yang dapat mereka gunakan untuk mengeksploitasi kerentanan yang diketahui terkait dengan tumpukan teknologi Anda.

Uji Konfigurasi Keamanan Server Express.js

Untuk menilai status keamanan aplikasi Anda, kami akan menggunakan Header Keamanan alat daring. Aplikasi ini dirancang khusus untuk mengevaluasi konfigurasi keamanan header HTTP untuk sisi klien, serta aplikasi sisi server.

Pertama, Anda perlu membuat server Express.js lokal Anda dapat diakses melalui Internet. Ada dua kemungkinan pendekatan untuk mencapai hal ini: menerapkan aplikasi Express.js Anda ke server cloud atau menggunakan ngrok.

Untuk menggunakannya, unduh ngrok zip, ekstrak file yang dapat dieksekusi, dan luncurkan aplikasi. Kemudian, jalankan perintah berikut untuk menghosting server Express.js lokal Anda dengan ngrok.

ngrok http 5000

ngrok akan menampilkan beberapa informasi singkat seperti ini:

Salin yang disediakan URL penerusan dan paste ke Header Keamanan' kotak masukan, dan klik pada Pindai tombol.

Setelah evaluasi keamanan selesai, Anda akan menerima laporan serupa.

Berdasarkan laporan tersebut, terbukti bahwa server Express.js menerima yang buruk F nilai. Tingkat rendah ini adalah hasil dari tidak adanya header keamanan HTTP yang penting dalam konfigurasi server—ketidakhadirannya membuat server rentan terhadap potensi risiko keamanan.

Integrasikan Helm di Aplikasi Express.js

Sekarang, lanjutkan dan integrasikan Helm ke dalam aplikasi Express.js Anda. Jalankan perintah di bawah ini untuk menginstal dependensi.

npm pasang helm

Perbarui file server.js Anda dan impor Helm.

const helm = memerlukan("helm")

Sekarang, tambahkan Helm ke aplikasi Express.js Anda.

aplikasi.gunakan (helm())

Terakhir, putar server pengembangan, salin tautan penerusan dari ngrok's terminal, dan rekatkan ke Header Keamanan kolom input untuk memindai ulang server lokal. Setelah pemindaian ulang selesai, Anda akan melihat hasil yang serupa dengan ini:

Setelah mengintegrasikan Helm, Express.js menyertakan beberapa header keamanan penting dalam respons HTTP. Peningkatan substansial ini menyebabkan aplikasi Express.js bertransisi ke A nilai.

Meskipun Helm bukanlah solusi yang sangat mudah, Helm secara signifikan meningkatkan keamanan keseluruhan aplikasi Express.js Anda.

2. Mengamankan Aplikasi Express.js Menggunakan Joi, Pustaka Validasi Input

Joi adalah library validasi input yang membantu mengamankan aplikasi Express.js dengan menyediakan cara mudah untuk memvalidasi dan membersihkan input pengguna. Dengan menentukan skema validasi menggunakan Joi, Anda dapat menentukan struktur, tipe data, dan batasan yang diharapkan untuk data yang masuk.

Joi memvalidasi input terhadap skema yang ditentukan, memastikannya memenuhi kriteria yang ditentukan. Ini membantu mencegah kerentanan keamanan umum seperti injeksi data, skrip lintas situs (XSS), dan serangan manipulasi data lainnya.

Ikuti langkah-langkah ini untuk mengintegrasikan Joi ke dalam aplikasi Anda.

  1. Instal Joi.
    npm instal joi
  2. Impor Joi di file server.js Anda.
    const Jo = memerlukan('joi');
  3. Buat skema validasi data Joi yang menentukan struktur yang diharapkan dan batasan apa pun untuk data masukan.
    const skema = Joi.objek({
    email: Joi.string().email().required(),
    kata sandi: Joi.string().min(5).maks(16).diperlukan()
    });
  4. Validasi semua data yang masuk menggunakan skema yang ditentukan.
    const { kesalahan, nilai } = schema.validate (req.body);

    jika (kesalahan) {
    // Tangani kesalahan validasi
    // Misalnya, kembalikan respons kesalahan
    kembali res.status(400).json({ kesalahan: rincian kesalahan[0].pesan });
    }

Dengan menerapkan langkah-langkah ini, Anda dapat memanfaatkan kemampuan validasi input Joi untuk mengamankan aplikasi Express.js Anda. Ini akan memastikan data yang masuk memenuhi batasan yang ditentukan, mencegah potensi ancaman keamanan manipulasi data.

3. Mengamankan Aplikasi Express.js Menggunakan Mekanisme CORS

Cross-Origin Resource Sharing (CORS) adalah mekanisme yang digunakan server web untuk mengelola asal—klien atau aplikasi sisi server lainnya—yang dapat mengakses sumber daya yang dilindungi. Mekanisme ini membantu melindungi dari permintaan lintas asal yang tidak sah, mencegah masalah seperti serangan pembuatan skrip lintas situs (XSS).

Untuk mengamankan aplikasi Express.js menggunakan CORS, ikuti langkah berikut:

  1. Instal paket CORS.
    npm instal kor
  2. Wajibkan dan gunakan middleware CORS di file server.js.
    const kor = memerlukan('kor');
    app.use (cors());

Dengan mengintegrasikan middleware CORS ke dalam aplikasi Express.js, Anda mengaktifkan Cross-Origin Resource Sharing. Hal ini memastikan bahwa Anda memitigasi potensi risiko keamanan yang terkait dengan permintaan lintas asal.

Mengamankan Aplikasi Sisi Server Dengan Mudah

Anda dapat menggunakan satu atau beberapa tindakan penting ini untuk meningkatkan keamanan aplikasi Express.js Anda.

Meskipun ada banyak tindakan dan pendekatan yang tersedia untuk melindungi aplikasi sisi server Anda, kesimpulan utamanya adalah Anda harus memprioritaskan keamanan di seluruh siklus hidup pengembangan. Ini adalah tugas yang dimulai pada fase desain dan harus terus berlanjut hingga penerapan.