Hoşgeldin Misafir

PHP ile Güvenli Form İşlemleri: CSRF ve XSS Önlemleri

Sarraf

Sarraf

THS-SARRAF
Belarus
12 Ara 2020
2,111 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:

PHP ile Güvenli Form İşlemleri: CSRF ve XSS Önlemleri


Web uygulamalarında form kullanımı, kullanıcıyla etkileşimin en temel yollarından biridir. Ancak formlar aynı zamanda güvenlik açıklarının da en sık yaşandığı yerlerdendir. Özellikle CSRF (Cross-Site Request Forgery) ve XSS (Cross-Site Scripting) gibi saldırılar, yeterli önlem alınmayan PHP tabanlı uygulamalarda ciddi riskler doğurabilir.

Bu yazıda, PHP ile form işlemlerinde CSRF ve XSS gibi yaygın güvenlik açıklarına karşı nasıl etkili önlemler alabileceğimizi sade ve örneklerle anlatacağız.

iy4zx9a.png

1. XSS (Cross-Site Scripting) Nedir?


XSS saldırısı, saldırganın form aracılığıyla sisteme zararlı JavaScript kodları yerleştirmesiyle gerçekleşir. Bu kodlar, başka kullanıcıların tarayıcısında çalıştırılarak veri çalma, oturum çalma gibi eylemler gerçekleştirebilir.

XSS’e Karşı Ne Yapmalı?


Her zaman kullanıcıdan gelen veriyi filtreleyin ve çıkışta temizleyin.

Kod:
php
// Temizleme örneği
function guvenliYazi($veri) {
return htmlspecialchars($veri, ENT_QUOTES, 'UTF-8');
}

Formdan gelen veriyi sayfada güvenli bir şekilde göstermek:
Kod:
php
echo guvenliYazi($_POST['ad']);

obs0wng.png

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

CSRF saldırısı, kullanıcının bilgisi dışında, oturum açıkken başka bir siteden gelen formun işlem yapmasına neden olur. Bu saldırı, özellikle bankacılık ve üyelik işlemlerinde büyük risk taşır.

CSRF’e Karşı Ne Yapmalı?

Her forma benzersiz bir “token” (jeton) eklenmeli ve bu token sunucuda doğrulanmalıdır.


Token Oluşturma (form yüklenirken):

Kod:
php
session_start();
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));

Form İçine Token Ekleme:

Kod:
html
<form method="post" action="islem.php">
  <input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
  <input type="text" name="ad" required>
  <button type="submit">Gönder</button>
</form>

Token Doğrulama (form gönderildiğinde):

Kod:
php
session_start();
if (!isset($_POST['csrf_token']) || $_POST['csrf_token'] !== $_SESSION['csrf_token']) {
    die("Geçersiz istek!");
}

Token kontrolünden sonra form işlemlerini güvenle gerçekleştirebilirsiniz.

Ekstra Güvenlik İpuçları

  • Veritabanı işlemlerinde hazırlıklı sorgular (prepared statements) kullanarak SQL Injection riskini de engelleyin.
  • Form verilerini işlerken sadece gerekli alanlara izin verin (whitelisting).
  • Kullanıcı girişleri için uzunluk sınırlamaları ve regex doğrulama kullanın.
  • Güvenli HTTPS bağlantısı kullanarak verinin ağda dinlenmesini engelleyin.

Formlar, web uygulamalarının vazgeçilmez bir parçasıdır; ancak beraberinde ciddi güvenlik riskleri getirebilir. PHP ile geliştirdiğiniz sistemlerde, XSS için veri çıkışında filtreleme, CSRF için token doğrulama gibi yöntemleri uygulamak, sizi büyük güvenlik açıklarından koruyacaktır.

Unutmayın: Güvenli bir sistem, iyi yazılmış kod kadar, önceden alınmış önlemlerle de ilgilidir.
 

THS-AI

THS-AI

THS YAPAY ZEKA
Turkhacks Kurumsal
20 Haz 2025
11,255 Mesaj

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
CSRF koruması için token kullan, formlarda gizli alan ekle. XSS önlemek için, kullanıcı girişlerini her zaman uygun şekilde temizle ve htmlspecialchars fonksiyonunu kullan. Ayrıca, güvenli bağlantılar ve güncellemeleri takip et.