Form Güvenliği: CSRF ve XSS Saldırılarına Karşı Önlemler

  • Konbuyu başlatan Konbuyu başlatan irfo
  • Başlangıç tarihi Başlangıç tarihi

irfo

Moderatör
Katılım
7 Ocak 2026
Mesajlar
290
Tepkime puanı
2
Puanları
18
İnternet dünyasında formlar, saldırganlar için en büyük kapılardır. 2026 yılı standartlarında, sadece veriyi veritabanına kaydetmek yetmez; bu verinin güvenliğinden de %100 emin olmalısınız. Bu rehberde en yaygın iki saldırı türüne ve PHP ile bunlara karşı nasıl kale inşa edeceğimize bakacağız.

1. XSS (Cross-Site Scripting) Nedir?​


XSS, bir saldırganın formlar aracılığıyla sitenize zararlı JavaScript kodları enjekte etmesidir. Eğer kullanıcıdan gelen veriyi temizlemeden ekrana basarsanız, saldırgan diğer kullanıcıların çerezlerini (cookies) çalabilir.

Örnek Saldırı: Kullanıcı adı yerine <script>alert(document.cookie)</script> yazılması.

XSS'e Karşı Önlem: Veriyi Arındırma​

Kullanıcıdan gelen her veriyi ekrana basmadan önce mutlaka htmlspecialchars() fonksiyonundan geçirmelisiniz.

PHP:
// Kötü Kullanım (Saldırıya açık)
echo "Hoş geldin, " . $_POST['kullanici_adi'];

// Güvenli Kullanım
temizad=htmlspecialchars(_POST['kullanici_adi'], ENT_QUOTES, 'UTF-8');
echo "Hoş geldin, " . $temiz_ad;

2. CSRF (Cross-Site Request Forgery) Nedir?​


CSRF, kullanıcının haberi olmadan onun oturumunu kullanarak başka bir siteden sizin sitenize istek gönderilmesidir. Örneğin; bir saldırgan, kendi sitesine koyduğu gizli bir butonla, sizin sitenizde oturumu açık olan bir kullanıcıya "hesabımı sil" isteği göndertebilir.

CSRF'ye Karşı Önlem: Token (Güvenlik Anahtarı)​

Her form için sunucu tarafında benzersiz bir anahtar (token) üretilmeli ve bu anahtar formla birlikte gönderilmelidir.

PHP:
<?php
session_start();

// 1. Token oluşturma (Eğer yoksa)
if (empty($_SESSION['csrf_token'])) {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
}
?>

<form method="POST" action="islem.php">
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
<input type="text" name="mesaj">
<button type="submit">Gönder</button>
</form>

İşlem Sayfasında Kontrol (islem.php)​

PHP:
if (_SERVER['REQUEST_METHOD'] === 'POST') {
if (!isset(_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
die("CSRF Güvenlik İhlali Saptandı!");
}
// İşlemlere devam edebilirsiniz...
}

Güvenlik Önlemleri Özet Tablosu​


Saldırı TürüKritik NoktaÇözüm Yöntemi
XSSEkrana Veri Yazdırmahtmlspecialchars() veya strip_tags()
CSRFForm GönderimiBenzersiz CSRF Token Kullanımı
SQL InjectionVeritabanı SorgusuPDO & Prepared Statements
Brute ForceGiriş PaneliCaptcha veya İstek Sınırlama (Rate Limit)

3. Ekstra Güvenlik Katmanları​



  • [] Input Filtering: E-posta alıyorsanız FILTER_VALIDATE_EMAIL, sayı alıyorsanız intval() kullanın.
    [] HTTPS Kullanımı: Veriler tarayıcı ile sunucu arasında şifreli gitmelidir.
  • Cookie Güvenliği: Oturum çerezlerini HttpOnly ve Secure bayraklarıyla işaretleyin.

Sonuç​


Güvenlik, bir projenin "sonradan eklenen" parçası değil, temel taşıdır. XSS koruması ile kullanıcılarınızın verilerini, CSRF koruması ile de işlemlerin doğruluğunu garanti altına alırsınız. Bu iki yöntemi alışkanlık haline getirdiğinizde, çok daha profesyonel ve güvenilir bir PHP geliştiricisi olacaksınız.
 
Geri
Üst