Zihni Kaya Özgürlük

Güvenli PHP Uygulamaları – Cross site scripting(XSS)

Kullanıcının betiklerimize html kodu enjekte etmesiyle ortaya çıkar.
Girdi filtrelenmeden çıktı olarak sunuluyorsa bu saldıya uğranabilir.

Aşağıdaki gibi bir formumuz olsun:

1
2
3
4
<form id="form1" action="" method="post">
<textarea name="mesaj"></textarea>
<input type="submit" value="gönder" />
</form>

Formdaki mesaj alanına aşağıdaki javascript kodunun enjekte edildiğini varsayalım.

1
2
3
<?php 
<script type="text/javascript">window.location = 'http://www.zihni.net' </script>
?>

Girdiyi filtrelemeden, aşağıdaki şekilde ekrana yazdırırsak, sayfaya giren her kullanıcıyı istediğimiz siteye yönlendiririz.

1
2
3
<?php 
echo $_POST['mesaj'];
?>

Yukardaki kodun zararlı etkilerinden korunmak için girdiyi htmlentities() işleviyle filtrelememiz gerekir.

1
2
3
<?php 
echo htmlentities($_POST['mesaj']);
?>
Paylaş:
  • Farkinda
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google
  • Digg
  • LinkedIn
  • Live
  • StumbleUpon
  • Technorati
  • TwitThis
  • Yahoo! Buzz

Bir Yorum

  1. enver says:

    ben kullanıcıların giriş yaptıkları formlardan gelen verileri ekte verdiğim fonksiyon ile kontrol ettiriyorum, zararlı kodları temizlemek için birebir.
    http://tinypaste.com/92023

Yorum Yaz