Php'de XSS/CSS Açıklarından Korunma

Pardus-Linux.org | Wiki sitesinden

Git ve: kullan, ara

XSS [Cross Site Scripting] Açıkları PHP Dilinde Nasıl Oluşur ve Bu Açıklar Nasıl Kapatılır?

Xss [Cross Site Scripting] açıkları genellikle form alanlarında, yani kullanıcının veri yazdığı yerlerde oluşur, ama bu başka hiç bir yerde yoktur anlamına da gelmez. Xss açıkları deneme yanılma yoluyla da bulunabilir. Yani herhangi bi dil bilmenize gerek yok. Ama PHP ve Javascript bilirseniz size yararı dokunacaktır. Xss açıklarını kapatmak veya hiç oluşmamasını sağlamak için her türlü değişkeni kendi hazırladığımız bir filtreden geçirmeliyiz. Bir örnekle konuyu açabilirim sanırım:

index.php;

<form action="index.php?xss" method="GET">
Lütfen Bir Değer Giriniz : <input type="text" name="xssed">
<br>
<input type="submit" value="Xss Yi Yolla">

index.php'de html kodlar ile kullanıcının bir değer girmesini istedik, Yani xssed adında bir string değişken oluşturduk. Şimdi bunu PHP kodları ile ekrana yazdıracağız: Echo,Print komutlarıyla.

<?php

$Xssed1 = $_GET["xssed"];

echo $Xssed1;


?>
Bu da aynı dosyada
<html>
tag'larından sonrasına gelirse Xssed1 değişkeni zararlı kodlara maruz kalıyor. Yani
index.php?xssed=[Xss] 

Peki Bunu Nasıl Önleyebiliriz? Bunu bir fonksiyon oluşturarak yapabiliriz. Ayrıca .htaccess dosyası ile de sorun ortadan kalkar. Şimdi fonksiyon oluşturarak bu zararlı kodları engelleyelim.

Herhangi bir dosyaya şunları yazıyoruz;


Function Kodtemizle(){


$zkod  = array(“script”,”<”,”location”,”alert”,”(”,”)”,”chr”,”’”);
$tkod = array(“”,””,””,””,””,””,””,””);
$veri= str_replace($zkod,$tkod,$veri); 


}

Yukarıdaki fonksiyonu örneğin Mysql bağlantı dosyasına yazabilirsiniz. Post yada Get ile çektiğiniz verileri:

$postgelen = KodTemizle($_POST[“postgelen”]); 

Şeklinde kullanabilirsiniz, ama bana .htaccess ile temizleme daha kullanışlı geldi.

Sitenize zarar verecek kişiler JS[JavaScript] kodlarını encode ederse (şifrelerse) kodları KodTemizle Fonksiyonumuz Tanımayacak, Xss yine oluşacaktir. Bunu .htaccess kullanarak önleyebiliriz.

Şimdi .htaccess dosyası İle zararlı kodları temizleyeceğiz. Bunu şu şekilde yapıyoruz:

RewriteEngine On

RewriteCond %{QUERY_STRING} base64_encode.*\(.*\) [OR]

RewriteCond %{QUERY_STRING} (\<|%3C).*script.*(\>|%3E) [NC,OR]

RewriteCond %{QUERY_STRING} GLOBALS(=|\[|\%[0-9A-Z]{0,2}) [OR]

RewriteCond %{QUERY_STRING} _REQUEST(=|\[|\%[0-9A-Z]{0,2})

RewriteRule ^(.*)$ index.php [F,L]

Yukardaki kodları s3pd0x.txt olarak kaydedebilirsiniz. Web sayfanızın Kontrol Panelinden [Plesk,Cpanel] giriş yaptıktan sonra s3pd0x.txt dosyasının adını .htaccess olarak değiştiriniz. Böylece Xss’den tamamen olmasa da kısmen korunmuş olacaksınız.


Hazırlayan : S3pd0x
Amaç  : Güvenli Bir Web.
e.posta  : ynlfehhz[at]gmail[nokta]com / s3pd0x[at]x-ss[nokta]info # Sadece Mail.

Bu konunun Forum'daki adresi: http://forum.pardus-linux.org/viewtopic.php?f=61&t=14398