Cross Site Scripting ve Güvenlik

in #utopian-io7 years ago (edited)

Cross Site Scripting Nedir ?
Bir çok veb uygulamalarda yer alan bu açığın giderilmesi ve sistemlerimizin bu açığa karşı korunabilmesi için size önemli bilgiler vereceğim.

Filtreleme:

Cross Site Scripting açığından korunmak için ilk olarak filtreleme yöntemini kullana biliriz.Filtreleme yöntemi hem diğer seçeneklere göre daha kolay bir yöntemdir.
Cross Site Scriptingde kullanılan tagları filtreleyerek,bu acığın kapanması konusunda ilk adımımızı atmış oluruz.Örnek ve Pratik olarak bir cross site scripting açığının kodunu inceleyelim ,daha iyi anlamış oluruz.

< script> alert("@byltc") </script

Brncii.jpg

Yukarda yer alan < script > tagları ,bu açığı oluşturan en önemli etkendir .Bu tagların filtrelenmesi yapıldığında güvenliğimiz en üst seviyeye çıkacaktır.
Bu tagların filtrelenmesi için aşağıdaki kodu kullanabiliriz.

< ?php
htmlentities(urldecode($xss_guvenligiris));
?>

Yukardaki kod veb uygulama dosyasına yazdığınız zaman filtreleme işlemi yapmış olduk.Bu kodu açıklayacak olursan HTMLENTİTİES fonksiyonu <,> ve & gibi karakterlerin oluşumunu engellemektedir.Bu sayede taglar yazılmamaktadır.

Güvenlik açığında **GET ve Post **metodları ile filtreleme yaparak güvenliğimizi üst düzey hale getirebiliyoruz.

Örnek bir kod yazalım :

< ?php
$_GETS = array();
// Get , metodu veri alma amacli kullaniliyor.
$_POSTS = array();
// Post metodu veriyi gonderme amacli kullanilmakta.
foreach($_GET as $key => $value) {
$_GETS[$key] = dataFilter($value, 5, 7);
}
foreach($_POST as $key => $value) {
$_POSTS[$key] = dataFilter($value, 7, 5);
}
?>

ikincii.jpg

Yukardakı görülen kodda POST ve GET metodları kullandık.Bu metodlar kullanılarak filtreleme işlemini üst düzeyde yapmış olduk.
Ayrıca bu kodda PHP dilinde ,döngüler sisteminde yer alan FOREACH döngüsünü de kullandık.
Yukarda yazdığımız kodu detaylı şekilde ele alalım.

$_GETS = array();
$_POSTS = array();

Burada hem GET hemde POST metodu kullandık.Bu metodların kullanılma nedeni veri gönderme ve veri çekmenin aynı anda ve hızlı bir biçimde yapılmasıdır.Bu kodları yazdıktan sonra asıl fiktreleme işlevi için sıradaki kodları yazmamıza geldi.Sıradaki kodumuzu yazalım.

foreach($_GET as $key => $value) {
$_GETS[$key] = dataFilter($value, 5, 7);
}

Bu iki satır kodumuz ise tek işlevi vardır. Bu kodda GET metodu için filtreleme işlevi kullandık.GET metodu ile filtreleme işlemi FOREACH döngüsü ile bağlamış olduk.
FOREACH döngüsü ile - $_GETS[$key] ** kodunda bir filtreleme söz konusu olduğu zaman kod loop yani döngüye uğrayacaktır. Buradaki döngü sadece
GET metodu** için oluşturulmuş bir döngüdur.Diğer konumuz ise yine metodla alakalı bir koddur.Ancak metod GET metodunun tam tersi işlevi olan POST metodudur.

POST metodu kodumuz ise aşağıdaki gibidir :

foreach($_POST as $key => $value) {
$_POSTS[$key] = dataFilter($value, 7, 5);
}

buuda3ucuncu.jpg

Bu kodumuz ise ,yine aynı döngü içerisinde kullanılmıştır.Yukarıdaki kodumuzdan farkı ise GET metodu yerine POST metodunun kullandığımızdır.
GET ve POST metodlarını ayırmazsak,güvenliğimizz üst seviyeye çıkmış olur.Anca GET metodu filtrelemesi yapılır da POST metodu filtrelemesi yapılmazsa ,tam olarak güvenliğimiz sağlamış olmayız.
GET ve POST (Güvenlik)filtrelemesi için ne kadar önemli olmasını umarım anlata bildim .
@byltc



Posted on Utopian.io - Rewarding Open Source Contributors

Sort:  

The @OriginalWorks bot has determined this post by @byltc to be original material and upvoted it!

ezgif.com-resize.gif

To call @OriginalWorks, simply reply to any post with @originalworks or !originalworks in your message!

Please note that this is a BETA version. Feel free to leave a reply if you feel this is an error to help improve accuracy.

Your contribution cannot be approved because it does not follow the Utopian Rules.

Edited and change github repository . @manishmike10