如果在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