SQL Injection
Kullanıcı girdisinin doğrudan SQL sorgusuna eklenmesiyle oluşur. Saldırgan veritabanına yetkisiz erişebilir, veri silebilir.
// YANLIŞ — SQL injection açığı
$sql = "SELECT * FROM users WHERE email = '" . $_POST["email"] . "'";
// DOĞRU — Prepared Statement
$stmt = $pdo->prepare("SELECT * FROM users WHERE email = ?");
$stmt->execute([$_POST["email"]]);XSS (Cross-Site Scripting)
Kullanıcı girdisinin HTML'e ham halde eklenmesi XSS'e yol açar. Saldırgan JavaScript kodu çalıştırabilir.
// YANLIŞ
echo $_GET["isim"];
// DOĞRU
echo htmlspecialchars($_GET["isim"], ENT_QUOTES, "UTF-8");CSRF (Cross-Site Request Forgery)
Kullanıcının bilgisi olmadan form gönderilmesini sağlar. Token ile korunulur.
// Token oluştur
$_SESSION["csrf"] = bin2hex(random_bytes(32));
// Form'a ekle
echo '';
// Doğrula
if (!hash_equals($_SESSION["csrf"], $_POST["csrf"])) die("Geçersiz token");