如果在PHP代碼的開頭恰當地使用了「Html-Entity Encoded」,那麼在表單字段中單獨使用這種字符組合是否可用於XSS或SQL攻擊?Html-Entity編碼爲空的HTML標記
<>
這是一個非常簡單的程序,顯示早在文本字段的值,當我們提交表單:
<?php
foreach ($_POST as &$_HTTP_FIELD) {
$_HTTP_FIELD = htmlentities($_HTTP_FIELD,ENT_QUOTES,'ISO-8859-1');
}
foreach ($_GET as &$_HTTP_FIELD) {
$_HTTP_FIELD = htmlentities($_HTTP_FIELD,ENT_QUOTES,'ISO-8859-1');
}
?>
<html><body>
<form action="/index2.php" name="abcd" method="post">
<input type="text" name="texte" value="<? echo $_POST['texte'];?>">
<input type="submit" name="Soumission" value="Submit">
</form>
</body></html>
我敢肯定,這不遵循最佳編碼實踐,但其本身,如果echo-ed變量位於「值」字段中,則此代碼似乎不具有風險。
但是,當我們在文本字段中嘗試「<>」時,虛擬主機防火牆將通過發送403錯誤來阻止請求。
爲了清晰起見,我沒有在這裏指定文檔編碼,但實際上文檔是在ISO-8859-1中生成的。所以它匹配htmlentities函數。
沒有太多的信息,但現在讓我們說,我的虛擬主機不會讓我的PHP代碼嘗試自行清理POST數據。即使我在所有POST變量中循環並刪除它們,也會引發錯誤403。 – 2015-03-31 22:19:37
我們可以看到你的php代碼嗎? – bigben3333 2015-03-31 22:39:02
查看編輯的問題。 – 2015-03-31 23:00:37