XSS攻擊

跨站點腳本(Cross-site scripting,XSS)是一種計算機安全漏洞類型,常見於 Web 應用程序。XSS 能夠使攻擊者向其他用戶瀏覽的網頁中輸入客戶端腳本。

小demo。

假設我們的一張名爲 “test_form.php” 的頁面中有如下表單:

<form method="post" action="<?php echo $_SERVER["PHP_SELF"];?>">

這裏的$_SERVER["PHP_SELF"] 是一種超全局變量,它返回當前執行腳本的文件名。
因此,$_SERVER["PHP_SELF"] 將表單數據發送到頁面本身,而不是跳轉到另一張頁面。這樣,用戶就能夠在表單頁面獲得錯誤提示信息。

現在,如果用戶進入的是地址欄中正常的 URL:”http://www.example.com/test_form.php“,上面的代碼會轉換爲:

<form method="post" action="test_form.php">

這是正常的,是我們想要的。不過,如果用戶在地址欄中鍵入瞭如下 URL:

http://www.example.com/test_form.php/%22%3E%3Cscript%3Ealert('hacked')%3C/script%3E

在這種情況下,上面的代碼會轉換爲:

<form method="post" action="test_form.php"/><script>alert('hacked')</script>

這段代碼加入了一段腳本和一個提示命令。並且當此頁面加載後,就會執行 JavaScript 代碼(用戶會看到一個提示框)。造成了xss攻擊。

解決方法:使用 htmlspecialchars() 函數能夠避免 $_SERVER["PHP_SELF"] 被利用。

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章