$_SERVER["PHP_SELF"]是超級全局變量,傳回目前正在執行腳本的檔案名,與 document root相關。
當黑客使用跨網站腳本的HTTP連結來攻擊時,$_SERVER["PHP_SELF"]伺服器變量也會被植入腳本。原因就是跨網站腳本是附在執行檔案的路徑後面的,是以$_SERVER["PHP_SELF"]的字元串就會包含HTTP連結後面的JavaScript程式代碼。
如何避免:
$_SERVER["PHP_SELF"] 可以通過 htmlspecialchars() 函數來避免被利用。
htmlspecialchars() 函數把一些預定義的字元轉換為 HTML 實體。
& (和号) 成為 &
" (雙引号) 成為 "
' (單引号) 成為 '
< (小于) 成為 <
> (大于) 成為 >
例子:
if ($_SERVER["REQUEST_METHOD"] == "POST")
{
if (empty($_POST["name"])) //空值處理
{
$nameErr = "名字是必須的";
}
else
{
$name = myInput($_POST["name"]);
}
//接收資料并處理和指派
$email = myInput($_POST["email"]);
$website = myInput($_POST["website"]);
$comment = myInput($_POST["comment"]);
$gender = myInput($_POST["gender"]);
}
//處理資料
function myInput($data)
{
$newData = trim($data); //去除空格和換行
$newData = stripslashes($data); //去除反斜杠
$newData = htmlspecialchars($data); //轉義函數
return $newData;
}
然後就OK啦,感覺萌萌哒(懵懵哒)~