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.
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ı.
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.
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.
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 |
|---|---|---|
| XSS | Ekrana Veri Yazdırma | htmlspecialchars() veya strip_tags() |
| CSRF | Form Gönderimi | Benzersiz CSRF Token Kullanımı |
| SQL Injection | Veritabanı Sorgusu | PDO & Prepared Statements |
| Brute Force | Giriş Paneli | Captcha 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.