PHP XSS Güvenlik Açığı

XSS (Cross-Site Scripting), Türkçe açılımıyla “Siteler Arası Komut Dosyası Çalıştırma”, web uygulamalarında yaygın bir güvenlik açığıdır. Bu saldırı türü, kötü niyetli bir kullanıcının tarayıcıya enjekte ettiği, genellikle JavaScript içeren kodları içerir. Bu kodlar, tarayıcı üzerinden başka bir kullanıcıya gönderilir ve tarayıcıda çalıştırıldığında, kullanıcının tarayıcı oturumu ele geçirilebilir, çerezler çalınabilir veya sayfa içeriği değiştirilebilir.

PHP ile yazılmış web uygulamalarında XSS saldırıları genellikle kullanıcı girişleri ile ilişkilidir. Kullanıcıların sağladığı veriler (örneğin, form alanları, URL parametreleri) yeterince doğru bir şekilde filtrelenmez veya kaçınılmaz bir şekilde doğrudan sayfaya eklenirse, bu tür saldırılar mümkün olabilir.

Örneğin, aşağıdaki PHP kodu potansiyel bir XSS açığına neden olabilir:

<?php
// Kullanıcıdan gelen veriyi kullanma örneği
$user_input = $_GET['input'];
echo "Hoş geldiniz, " . $user_input;
?>

Eğer bu kod doğru bir şekilde filtrelenmezse ve kullanıcı bir JavaScript kodunu “input” parametresine eklerse, bu kod tarayıcıda çalıştırılabilir:

http://example.com/index.php?input=<script>alert("XSS");</script>

Bu nedenle, güvenli bir web uygulaması geliştirmek için kullanıcı girişleri iyi bir şekilde doğrulanmalı, filtrelenmeli ve güvenli bir şekilde işlenmelidir. htmlspecialchars() veya htmlentities() gibi fonksiyonlar, kullanıcı girişlerini güvenli bir şekilde işlemek için kullanılabilir. Ayrıca, Content Security Policy (CSP) gibi güvenlik önlemleri de uygulanabilir.

htmlspecialchars:
htmlspecialchars fonksiyonu, belirli HTML karakterlerini HTML özel karakterlerine dönüştürerek, kullanıcı girişlerinin HTML içinde güvenli bir şekilde görüntülenmesini sağlar.

   <?php
   $user_input = '<script>alert("XSS");</script>';
   $safe_output = htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
   echo $safe_output;
   ?>

Bu örnekte, <script> etiketi içeren kullanıcı girişi güvenli bir şekilde işlenir ve tarayıcıda HTML etiketleri olarak görüntülenmez.

htmlentities:
htmlentities fonksiyonu, htmlspecialchars gibi çalışır, ancak ayrıca tüm karakterleri HTML sayısal referanslarına dönüştürür. Bu, daha geniş bir karakter kümesini güvenli bir şekilde işlemek için kullanışlı olabilir.

   <?php
   $user_input = '<script>alert("XSS");</script>';
   $safe_output = htmlentities($user_input, ENT_QUOTES, 'UTF-8');
   echo $safe_output;
   ?>

Bu örnekte, htmlentities fonksiyonu kullanılarak aynı şekilde XSS saldırısı önlenir.

Her iki fonksiyonun da ortak kullanımı, kullanıcı girişlerinin HTML içinde güvenli bir şekilde görüntülenmesini sağlamaktır. htmlspecialchars genellikle yeterli olabilir, ancak daha geniş bir güvenlik yelpazesi isteniyorsa htmlentities tercih edilebilir. ENT_QUOTES parametresi, hem tek tırnaklı (') hem de çift tırnaklı (") özel karakterleri işlemek için kullanılır. 'UTF-8' ise karakter setini belirtir ve genellikle modern web uygulamalarında kullanılan bir karakter setidir.

Ads Blocker Image Powered by Code Help Pro

Reklam Engelleyici Algılandı!

Reklamları engellemek için uzantı kullandığınızı tespit ettik.

Lütfen bu reklam engelleyiciyi devre dışı bırakarak ya da sitemize izin vererek bize destek olun.

Dikkat: VPN eklentiniz üzerinde de reklam engelleyici olabilir.