htmlspecialchars() ile güvenlik
htmlspecialchars() ile kullanıcı girdisinden XSS açığını kapatmayı öğrenirsin.
XSS ve htmlspecialchars()
Kullanıcıdan gelen veriyi doğrudan ekrana yazdırmak XSS (Cross-Site Scripting) açığı yaratır. Kötü niyetli biri form alanına <script>alert('kötü')</script> yazarsa, bu doğrudan çalıştırılır. htmlspecialchars() fonksiyonu <, >, &, " ve ' karakterlerini HTML varlıklarına çevirir; böylece tarayıcı metin olarak gösterir, kod olarak çalıştırmaz.
Örnek: echo htmlspecialchars($_POST['name']);. <script> girdisi <script> olarak çıkar; zararsızdır.
ENT_QUOTES bayrağı
htmlspecialchars() varsayılan olarak çift tırnağı " yapar ama tek tırnağa dokunmaz. Tek tırnakları da dönüştürmek için ENT_QUOTES bayrağını verirsin: htmlspecialchars($text, ENT_QUOTES). Böylece hem " hem ' güvenli olur.
Bu özellikle öznitelik içine yazdığın değerler için önemlidir: value="<?php echo htmlspecialchars($name, ENT_QUOTES); ?>". Aksi halde ' onclick='alert(1) gibi bir girdi öznitelikten kaçabilir.
Uygulama htmlspecialchars ile XSS'i engelle
$_POST['comment'] = "<script>alert(1)</script>"; ata. Sonra echo htmlspecialchars($_POST['comment'], ENT_QUOTES); yaz.
Örnek çözümü göster
Önce $_POST['comment'] = "<script>alert(1)</script>"; ata. Sonra echo htmlspecialchars($_POST['comment'], ENT_QUOTES); yaz.
Örnek çözüm:
<?php
// htmlspecialchars ile XSS'i engelle
$_POST['comment'] = "<script>alert(1)</script>";
echo htmlspecialchars($_POST['comment'], ENT_QUOTES);
Kendini test et
-
htmlspecialchars() ne yapar?
- Form verisini siler
- HTML etiketlerini yok eder
- Formu doğrular
- Özel karakterleri HTML varlıklarına çevirir
Cevabı göster
Özel karakterleri HTML varlıklarına çevirir — Doğru. htmlspecialchars <, >, &, ", ' karakterlerini güvenli HTML varlıklarına çevirir.
-
Karakteri HTML varlığına eşle
- <
- <
- >
- >
- &
- &
- "
- "
-
htmlspecialchars ile kaçırma
echo ____($_POST['comment']);Cevabı göster
echo htmlspecialchars($_POST['comment']);