CodeBlanks Logo Icon CodeBlanks

Özet - İleri güvenlik

PHP kursu · Uzman · Ders 35/54

Rate limiting, CSP ve secure upload'la sertleştirilmiş bir uygulama iskeleti yazarsın.

Özet - İleri güvenlik araçları

Bu grupta altı ileri güvenlik aracı öğrendin. password_needs_rehash ile eski hash'leri sessizce yükseltirsin. Rate limiting ile kaba kuvveti yavaşlatırsın. CSP, HSTS ve X-Content-Type-Options ile tarayıcı tarafını sertleştirirsin.

session_regenerate_id ile fixation kapatırsın. filter_var ile girdiyi doğrular, hash_hmac ile imzalarsın. random_bytes ile rastgele dosya adı üretirsin. Şimdi bu araçları birleştirip sertleştirilmiş bir uygulama iskeleti yazalım.

Uygulama Sertleştirilmiş uygulama iskeleti yaz

sendHeaders() fonksiyonu tanımla: header("Content-Security-Policy: default-src 'self'") ve header("X-Content-Type-Options: nosniff") çağırır. isRateLimited(int $attempts, int $limit = 3): bool fonksiyonu tanımla: $attempts > $limit ise true döndürür. needsRehash(string $hash): bool fonksiyonu tanımla: password_needs_rehash($hash, PASSWORD_DEFAULT) döndürür. $hash = password_hash("test", PASSWORD_BCRYPT, ["cost" => 4]) tanımla. sendHeaders() çağır. isRateLimited(5) ve needsRehash($hash) sonuçlarını 1/0 olarak yazdır.

Örnek çözümü göster
sendHeaders CSP ve nosniff gönderir; isRateLimited deneme sayısını sınır ile karşılaştırır; needsRehash password_needs_rehash($hash, PASSWORD_DEFAULT) döndürür. $hash = password_hash("test", PASSWORD_BCRYPT, ["cost" => 4]); tanımla. sendHeaders() çağır. isRateLimited(5) → 5 > 3 → true → 1. needsRehash($hash) → cost 4 < 10 → true → 1.
Örnek çözüm:
<?php
function sendHeaders(): void {
    header("Content-Security-Policy: default-src 'self'");
    header("X-Content-Type-Options: nosniff");
}
function isRateLimited(int $attempts, int $limit = 3): bool {
    return $attempts > $limit;
}
function needsRehash(string $hash): bool {
    return password_needs_rehash($hash, PASSWORD_DEFAULT);
}
$hash = password_hash("test", PASSWORD_BCRYPT, ["cost" => 4]);
sendHeaders();
echo (isRateLimited(5) ? "1" : "0") . "\n";
echo (needsRehash($hash) ? "1" : "0") . "\n";

Kendini test et

  1. Hangi fonksiyon eski parola hash'lerini yükseltir?

    • password_needs_rehash
    • password_verify
    • hash_equals
    • filter_var
    Cevabı göster

    password_needs_rehash — Doğru. password_needs_rehash yükseltme gerekip gerekmediğini döner.

  2. hash_hmac çağrısını tamamla

    $mac = ____("sha256", $data, $key);
    Cevabı göster
    $mac = hash_hmac("sha256", $data, $key);
  3. Savunmayı saldırıya eşleştir

    password_needs_rehash
    Eski hash yükseltme
    rate_limiting
    Kaba kuvvet
    CSP
    XSS
    session_regenerate_id
    Fixation

Uzman bölümündeki tüm dersler