CodeBlanks Logo Icon CodeBlanks

Özet - Güvenlik

PHP kursu · İleri seviye · Ders 66/92

password_hash, htmlspecialchars ve CSRF'le güvenli giriş formu yazarsın.

Özet - Güvenlik araçları

Bu grupta dört temel güvenlik aracı öğrendin. password_hash ile parolaları güvenle saklarsın; password_verify ile doğrularsın. htmlspecialchars ile XSS'i, prepare ile SQL injection'ı önlersin.

CSRF token'ları sahte form gönderimini engeller; hash_equals ile zamanlama saldırılarına karşı doğrularsın. Şimdi bu araçları birleştirip güvenli bir giriş denetimi yazalım.

Uygulama Güvenli giriş denetimi yaz

verifyLogin($password, $csrf, $hash) fonksiyonu tanımla. İçinde hash_equals($_SESSION['csrf_token'], $csrf) ile CSRF token'ını doğrula; eşleşmezse false döndür. Sonra password_verify($password, $hash) ile parolayı doğrula. $hash ve $_SESSION['csrf_token'] zaten tanımlı. Doğru parola ve doğru CSRF ile verifyLogin'i çağır; sonucu "geçerli" veya "geçersiz" olarak yazdır.

Örnek çözümü göster
"geçersiz") . "\n"; yazdır.
Örnek çözüm:
<?php
session_start();
$_SESSION['csrf_token'] = bin2hex(random_bytes(16));
$storedHash = password_hash("gizli123", PASSWORD_DEFAULT);
function verifyLogin($password, $csrf, $hash) {
    if (!hash_equals($_SESSION['csrf_token'], $csrf)) {
        return false;
    }
    return password_verify($password, $hash);
}
$ok = verifyLogin("gizli123", $_SESSION['csrf_token'], $storedHash);
echo ($ok ? "geçerli" : "geçersiz") . "\n";

Kendini test et

  1. Parolaları veritabanında saklamanın güvenli yolu nedir?

    • Düz metin olarak
    • md5 ile hash'leyerek
    • password_hash + PASSWORD_DEFAULT
    • base64_encode ile
    Cevabı göster

    password_hash + PASSWORD_DEFAULT — Doğru. password_hash + PASSWORD_DEFAULT güvenli ve güncel seçimdir.

  2. Kullanıcı adını güvenle yazdır

    echo ____($username, ENT_QUOTES, "UTF-8") . "
    ";
    Cevabı göster
    echo htmlspecialchars($username, ENT_QUOTES, "UTF-8") . "
    ";
  3. Savunmayı saldırıya eşleştir

    password_hash
    Parola sızıntısına karşı
    htmlspecialchars
    XSS saldırısına karşı
    hash_equals
    CSRF taklidine karşı
    prepare
    SQL injection'a karşı

İleri seviye bölümündeki tüm dersler