Özet - İleri güvenlik
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
-
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.
-
hash_hmac çağrısını tamamla
$mac = ____("sha256", $data, $key);Cevabı göster
$mac = hash_hmac("sha256", $data, $key); -
Savunmayı saldırıya eşleştir
- password_needs_rehash
- Eski hash yükseltme
- rate_limiting
- Kaba kuvvet
- CSP
- XSS
- session_regenerate_id
- Fixation