Html-实体编码为空HTML标签

Html-Entity encoded empty HTML Tag

如果在 PHP 代码的开头 "Html-Entity Encoded" 正确地 "Html-Entity Encoded" ,单独在表单字段中的这种字符组合是否可以用于 XSS 或 SQL 攻击?

<>

这是一个非常简单的程序,它在我们提交表单时显示文本字段中的文本值:

<?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>

我确定这不符合最佳编码实践,但就其本身而言,如果回显变量位于 "value" 字段中,则此代码似乎没有风险。

但是当我们在文本字段中尝试“<>”时,虚拟主机防火墙将通过发送 403 错误来阻止请求。

为了清楚起见,我没有在此处指定文档编码,但实际上该文档是在 ISO-8859-1 中制作的。所以它匹配htmlentities函数。

<> 可能行不通但是

" onmouseover="alert(1)

可能会成功,因为它呈现为

<input type="text" name="texte" value="" onmouseover="alert(1)">