mysql - Html-Entity 编码的空 HTML 标签

标签 mysql sql security xss

如果在 PHP 代码的开头正确地“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>

我确信这没有遵循最佳编码实践,但就其本身而言,如果回显变量位于“值”字段中,则此代码似乎没有风险。

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

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

最佳答案

<>可能行不通但是

" onmouseover="alert(1)

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

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

关于mysql - Html-Entity 编码的空 HTML 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29379555/

相关文章:

android - 隐含 Intent 的精确传递

php - 查询MySql select异常

mysql - Rails sql查询中动态传递参数

java - 如何使用deleteRow()方法从多个表中删除行

sql - 合并非结构化表中的行

sql - 为什么过滤器默认在 Spark 数据帧上删除空值?

javascript - 如何保护使用 javax.scripting 运行的脚本?

java - 无法使用具有正确凭据的 Spring 3.1 对 LDAP 帐户进行身份验证

php - php在特定时间间隔获得负值的时差

javascript - 从另一个域获取 iframe 的内容