Authentication ile authorization arasındaki fark nedir?
Cevap
- Authentication (kimlik doğrulama): "Sen kimsin?" sorusunun cevabı. Kullanıcı adı/parola, OAuth ile Google girişi, MFA.
- Authorization (yetkilendirme): "Bunu yapmaya iznin var mı?" Kimliği bilinen kullanıcının hangi kaynağa, hangi işlemle erişebileceği.
Sıra her zaman önce kimlik doğrulama, sonra yetkilendirmedir. HTTP'de karşılıkları: kimlik yoksa/geçersizse 401, kimlik var ama yetki yoksa 403.
Yaygın yetkilendirme modelleri
- RBAC (rol tabanlı):
admin,editor,viewergibi roller ve izinleri. - ABAC (öznitelik tabanlı): "kullanıcı yalnızca kendi departmanının belgelerini düzenleyebilir" gibi kurallar.
- Sahiplik kontrolü: kaynak kullanıcının mı?
app.delete("/api/posts/:id", requireAuth, async (req, res) => {
const post = await Post.findById(req.params.id);
if (!post) return res.sendStatus(404);
// authorization: sahibi veya admin mi?
if (post.authorId !== req.user.id && req.user.role !== "admin") {
return res.sendStatus(403);
}
await post.deleteOne();
res.sendStatus(204);
});En sık yapılan hata, yalnızca giriş yapılmış olmayı kontrol edip kaynağın sahipliğini kontrol etmemektir (IDOR).
İlgili Web Güvenliği soruları
- CORS nedir? Neden CORS hatası alırız?
- XSS ve CSRF saldırıları nedir, nasıl korunulur?
- Güvenli cookie ayarları nelerdir? Session hijacking nasıl önlenir?
- Content Security Policy (CSP) nedir ve nasıl yapılandırılır?
- OWASP Top 10 nedir? En önemli maddelerini özetleyin.
- Parolalar veritabanında nasıl saklanmalıdır? bcrypt ve Argon2 neden tercih edilir?
Bu konuda başka bir soru biliyor musun?
Mülakatta karşılaştığın soruları ekle, onaylandıktan sonra yayına alınsın.