我有一个带有文本框的表单,该表单将数据发布到使用功能“htmlentities”的php文件中,从而可以安全地通过电子邮件发送给网站所有者。

问题是有人设法在文本中获取超链接,而htmlentities()并未将其删除。

这是我的文本框html:

<input name="usertext" type="text" />

这是我的PHP代码,用于接收帖子数据(我将电子邮件代码省略了,因为那不是问题。我将其更改为仅回显接收到的数据,以便我可以尝试复制黑客的操作。如果我知道他的操作方式, ,我可以找到一种方法来阻止它的发生):
echo trim(htmlentities($_POST["usertext"], ENT_QUOTES));

现在,黑客发送了一些数据,这就是结果html(源代码-这意味着它在浏览器中显示了正常链接):
<a target="_blank" href="mailto:[email protected]">[email protected]</a>

我认为htmlentities()总是会阻止任何人输入任何形式的html。如果输入超链接,例如:
<a href="aaa" />

我得到:
&lt;a href="aaa" /&gt;

但是,黑客的文字并不是这样编码的。

所以我的问题是:
  • 黑客如何输入html标签,以便htmlentities()函数什么都没有做?
  • 我将如何复制它进行测试? (可以由上述问题回答)

  • 我做了一些研究,黑客可能会用utf-7或其他某种方式对他的文本进行编码?

    我已经收到一些带有这些链接的电子邮件。该黑客显然正在测试我的网站,以查看他是否可以执行XSS或其他操作。

    最佳答案

    好问题!我认为您可以阅读link来解释问题并提供解决方案。

    提出的解决方案是(通过元标记)向浏览器指定页面中使用的字符集。

    09-29 19:23