Basic Authentication

Bu yazıda eski popülerliğini kaybetmiş olsa da Basic Authentication kimlik doğrulama yöntemine değiniyor olacağım.

Basic Authentication, kullanıcı adı ve şifre bilgilerini base64 ile kodlayıp HTTP başlığı üzerinden sunucuya göndererek kimlik doğrulamasını yapan bir yöntemdir. Bu bilgiler Authorization başlığında gönderilir.

Bu kimlik doğrulama yönteminin basitlik ve standartlaşmış kullanım gibi avantajları olsa da ciddi güvenlik riskleri barındırır, bu yüzden de kullanımı giderek azalmıştır.

Nerelerde kullanılır?

Şirket içi uygulama ve servisler arasında kimlik doğrulama için kullanılır. Özellikle güvenliğin önemli olduğu ama dış dünyaya kapalı olan ağlarda tercih edilebilir.

Geliştirme ve test ortamlarında hızlı bir şekilde kimlik doğrulaması sağlamak için kullanılır.

Uygulamaların prototip sürümlerinde ve erken aşamalarında geçici olarak kullanılır.

Genel olarak güvenlik ihtiyacı düşük, karmaşık kimlik doğrulama yöntemi gerekmeyen ortamlarda basitliği ve hızı nedeniyle kullanılır.

Güvenliği arttırmak için neler yapılabilir?

Basic Authentication kullanan bir uygulamada da elbette güvenlik anlamında alabileceğiniz bazı önlemler var.

HTTPS kullanın. İletilip alınan verinin şifrelenmesi sağlamak her zaman ilk adımdır. :D

Kullanıcıların güçlü şifreler belirlemesi zorunlu olmalıdır.

Kullanıcı yetkilendirmelerini sıkı bir şekilde kontrol etmelisiniz. Yetkisi olmayan bir kaynağa erişemiyor olmalıdır.

Şifreler sık sık değiştirilmelidir.

Güvenlik duvarları kullanarak saldırılara karşı tedbir alınabilir.

IP Filtreleme ya da VPN kullanımı yapılabilir. Böylece yetkisiz erişim engellenebilir.

Nasıl kullanılır?

Aşağıda PHP ile yazılmış basit bir Basic Authentication örneğini görebilirsiniz.

const USERNAME = 'admin';
const PASSWORD = 'password';

function authenticate(string $username, string $password): bool
{
return $username === USERNAME && $password === PASSWORD;
}

if (isset($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW']) && authenticate($_SERVER['PHP_AUTH_USER'], $_SERVER['PHP_AUTH_PW'])) {
echo "Hoş Geldin @" . $_SERVER['PHP_AUTH_USER'];
} else {
header('WWW-Authenticate: Basic realm="Giriş Yapın"');
header('HTTP/1.0 401 Unauthorized');
exit;
}