Cross Site Scripting ve Güvenlik
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
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);
}
?>
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);
}
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
@originalworks
The @OriginalWorks bot has determined this post by @byltc to be original material and upvoted it!
To call @OriginalWorks, simply reply to any post with @originalworks or !originalworks in your message!
Your contribution cannot be approved because it does not follow the Utopian Rules.
You can contact us on Discord.
[utopian-moderator]
Edited and change github repository . @manishmike10