Kembali ke Artikel
2024-01-03•7 menit baca

Praktik Terbaik Keamanan API

SecurityAPIBackend

Praktik dan teknik penting untuk melindungi API dari kerentanan serta serangan umum.

Praktik Terbaik Keamanan API

Keamanan harus menjadi prioritas dalam setiap API. Berikut praktik penting untuk melindungi endpoint.

Autentikasi

Praktik Terbaik JWT

Tandatangani token dengan waktu kedaluwarsa dan verifikasi batas waktunya saat token digunakan:

// Sign token with expiration
const token = jwt.sign(
  { userId: user.id },
  process.env.JWT_SECRET!,
  { expiresIn: '1h' }
);

// Verify with expiration check
const decoded = jwt.verify(token, process.env.JWT_SECRET!);

OAuth 2.0

Untuk integrasi dengan pihak ketiga, gunakan OAuth 2.0.

Otorisasi

Kontrol Akses Berbasis Peran (RBAC)

Batasi operasi sesuai peran pengguna. Contoh berikut menolak permintaan ketika perannya tidak diizinkan:

function authorize(roles: string[]) {
  return (req: Request, res: Response, next: NextFunction) => {
    if (!roles.includes(req.user.role)) {
      return res.status(403).json({ error: 'Forbidden' });
    }
    next();
  };
}

// Usage
router.delete('/users/:id', authorize(['admin']), deleteUser);

Validasi Input

Selalu validasi dan bersihkan input:

const schema = z.object({
  email: z.string().email(),
  password: z.string().min(8)
});

function validateInput(data: unknown) {
  return schema.parse(data);
}

Pembatasan Permintaan

Cegah penyalahgunaan dengan membatasi jumlah permintaan:

app.use('/api', rateLimit({
  windowMs: 15 * 60 * 1000,
  max: 100
}));

Header Keamanan

Gunakan helmet.js untuk menambahkan header keamanan:

app.use(helmet());

Kesimpulan

Keamanan adalah pekerjaan berkelanjutan. Ikuti perkembangan kerentanan terbaru dan terapkan patch yang diperlukan.