Mysql Html实体编码的空Html标记

Mysql Html实体编码的空Html标记,mysql,sql,security,xss,Mysql,Sql,Security,Xss,如果在PHP代码的开头正确地编码了Html实体,那么表单字段中的字符组合是否可以单独用于XSS或SQL攻击 下面是一个非常简单的程序,当我们提交表单时,它会在文本字段中显示文本值: <?php foreach ($_POST as &$_HTTP_FIELD) { $_HTTP_FIELD = htmlentities($_HTTP_FIELD,ENT_QUOTES,'ISO-8859-1'); } foreach ($_GET as &$_HTTP

如果在PHP代码的开头正确地编码了Html实体,那么表单字段中的字符组合是否可以单独用于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>
我确信这并没有遵循最佳编码实践,但就其本身而言,如果echo-ed变量位于value字段中,那么这段代码似乎没有风险

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

出于清晰的原因,我没有在这里指定文档编码,但实际上文档是在ISO-8859-1中制作的。因此,它与htmlentities函数匹配。

可能不起作用,但

" onmouseover="alert(1)
很可能会成功,因为它被渲染为

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

现在并没有太多的信息,但假设我的web主机不允许我的PHP代码自行清理POST数据。即使我在所有POST变量中循环并删除它们,也会抛出错误403。我们可以看到您的php代码吗?请参阅编辑的问题。一个变体是使用:$\u HTTP\u FIELD=;在PHP部分,只需删除所有内容。。。但是如果我们尝试的话,仍然会抛出一个错误403。正如我在最初的问题中所说的,我的意图是将输入转换为html实体,因此建议中的双引号将被呈现为完全无害的。但无论如何,如果我忘记转换为html实体,就不会像你说的那样做任何有害的事情。所以我认为你的答案令人满意。这证明我的网站主持人高估了我的风险。