Cara Mengamankan Aplikasi Node.js: 3 Pendekatan Fleksibel

969 BLOG Cara Mengamankan Aplikasi Node.js: 3 Pendekatan Fleksibel

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 server web demo Express.js menggunakan npm, Node Package Manager. Buat folder proyek secara lokal dan ubah direktori ke folder itu di terminal Anda.

 mkdir express-project
cd express-project

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

 npm init -y 

Silakan dan instal Express.js.

 npm install express 

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

 const express = require("express")
const app = express()
const PORT = process.env.PORT || 5000

app.get("https://www.makeuseof.com/", (req, res) => {
    res.json("Hello, World!")
})

app.listen(PORT, () => {
    console.log(`Starting server on http://localhost:${PORT}`)
})

Mulai server dengan perintah ini:

 node server.js 

Anda sekarang siap menjelajahi beberapa tindakan yang dapat digunakan 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. Header ini menyediakan mekanisme pertahanan penting terhadap kerentanan keamanan backend umum, seperti skrip lintas situs (XSS), pemalsuan permintaan lintas situs (CSRF), dan banyak lagi.

Seorang pria duduk di meja mengetik di laptop dengan kode di layar.

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. Lanjutkan dan buat permintaan HTTP ke API menggunakan Postman atau klien lain yang menampilkan header 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.

Data header standar respons HTTP API pada klien Postman API.

Perhatikan X-Didukung-Oleh tajuk. Biasanya, teknologi backend menggunakan tajuk ini untuk menunjukkan kerangka kerja atau perangkat lunak lain yang mendukung 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:

informasi server web ngrok di jendela terminal.

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

header keamanan bidang input URL penerusan alat online

Setelah evaluasi keamanan selesai, Anda akan menerima laporan serupa.

Laporan evaluasi header keamanan HTTP Header Keamanan yang gagal

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 install helmet 

Perbarui file server.js Anda dan impor Helm.

 const helmet = require("helmet") 

Sekarang, tambahkan Helm ke aplikasi Express.js Anda.

 app.use(helmet()) 

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:

Laporan evaluasi header keamanan HTTP Header Keamanan yang berhasil

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 install joi 
  2. Impor Joi di file server.js Anda.
     const Joi = require('joi'); 
  3. Buat skema validasi data Joi yang menentukan struktur yang diharapkan dan batasan apa pun untuk data masukan.
     const schema = Joi.object({
      email: Joi.string().email().required(),
      password: Joi.string().min(5).max(16).required()
    });
  4. Validasi semua data yang masuk menggunakan skema yang ditentukan.
     const { error, value } = schema.validate(req.body);

    if (error) {
      
      
      return res.status(400).json({ error: error.details[0].message });
    }

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 mana—klien atau aplikasi sisi server lainnya—yang dapat mengakses sumber daya mereka 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 install cors 
  2. Wajibkan dan gunakan middleware CORS di file server.js.
     const cors = require('cors');
    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.

Comments

Popular posts from this blog

4 Alasan Anda Harus Membeli Pensil Apple untuk iPad Anda

10 Aplikasi Kesehatan Gratis Terbaik untuk Pengguna iPhone dan Apple Watch