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.