Php dilinde sık karşılaşılan aynı zamanda OWASP top 10 da yer alan kritik bir güvenlik açığı olan XSS nedir?
XSS nasıl oluşur? Nasıl kapatılır? Bu yazımızda XSS açığını tüm detayları ile anlatacağız.

XSS Nedir?

Türkçe anlamı Çapraz Kod Çalıştırma olan XSS(Cross site scripting) php dilinde sık karşılaşılan bir tür güvenlik açığıdır. XSS genelde şifre alanlarında, form alanlarında, arama alanlarında bulunur. form alanına girilen değerler herhangi bir fonksiyondan geçmediği için direkt olarak işlenir ve çalıştırılır.  Xss güvenlik açığına sahip bir websitesinde Form alanına veya URL adrese "

XSS " yazıldığı zaman website içeriğinde başlık olarak XSS yazıldığını göreceksiniz. Güvenlik açığı HTML kodlarını çalıştırabiliyor ve bu da siteyi tehlikeye sokuyor. XSS açığında sadece HTML değil javascript kodları da çalıştırılarak cookieler alınabiliyor. 

XSS açığının 3 türü vardır:

Reflected XSS: Normal bir değer yerine HTML veya JavaScript kodlarını girerek ekrana yansıtılıp tespit edilen türdür.

Stored/Persistent XSS: İsminden anlaşılacağı gibi kalıcı bir açık türüdür. Girilen değerler ekrana yansıtılmaz. Veritabanına veya farklı bir yere dahil olup ziyaret edildiği zaman çalışan açık türüdür.

Dom XSS: En tehlikeli XSS türü olarak bilinmektedir. Domlardan kaynaklanır ve sayfa yenileterek alert alınması sağlanarak tespit edilir.

Image

Xss Açığı Nasıl oluşur?

Xss açığı input alanın'ın htmlspecialchars fonksiyonundan veya farklı bir fonksiyondan geçirmeden direkt olarak post edilmesiyle oluşuyor. Örnek olarak bir form alanı oluşturuyoruz:


İsminiz

$a = $_POST["isim"];

echo $a ;

?>


Burada $a = $_POST["isim"];  bir fonksiyondan geçirmediğimiz için xss güvenlik açığı oluşuyor. 

Formumuza Deneme diye veri gönderiyoruz ve sonuca bakıyoruz

Image

Gördüğünüz gibi HTML kodları çalıştı ve Deneme yazısı kalın bir şekilde yazıldı. Bu açığın olduğunu işaret ediyor.



Xss Açığı Nasıl Kapatılır?

Xss açığını kapatmanın bir çok yolu vardır biz burada sadece bir fonksiyon ile nasıl engelleyecebileceğinizi göstereceğiz. Kodlarımızı tekrar inceliyoruz

İsminiz

$a = $_POST["isim"];

echo $a ;

?>


Burada $a = $_POST["isim"]; kodumuzu şöyle değiştirerek  :

$a = htmlspecialchars($_POST["isim"]); 

Güvenlik açığını kapatmış oluyoruz.  Tekrar input alanına bir HTML değeri girip sonucumuza bakalım.

Görüldüğü gibi HTML kodu çalışmadı.

Bu İçeriğe Tepki Ver (en fazla 3 tepki)

Facebook Yorumları



Disqus Yorumları