我有一个带有文本框的表单,它将数据发布到一个使用“htmlentities”函数的php文件中,以确保向网站所有者发送电子邮件是安全的。
问题是有人设法在文本中获得了超链接,而 htmlentities() 没有删除它。
这是我的文本框 html:
<input name="usertext" type="text" />
这是我接收帖子数据的 PHP 代码(我将电子邮件代码省略了,因为这不是问题。我将其更改为仅回显接收到的数据,以便我可以尝试复制黑客所做的事情。如果我知道他是如何做到的,我可以找到一种方法来阻止它发生):
echo trim(htmlentities($_POST["usertext"], ENT_QUOTES));
现在黑客发送了一些数据,这是结果 html(源代码 - 这意味着它在浏览器中显示了一个正常的链接):
<a target="_blank" href="mailto:nyjfvw@fbjgzy.com">nyjfvw@fbjgzy.com</a>
我认为 htmlentities() 总是会阻止任何人输入任何类型的 html。如果我输入一个超链接,例如:
<a href="aaa" />
我得到:
<a href="aaa" />
但黑客的文本不是这样编码的。
所以我的问题是:
- 黑客是如何输入 html 标签以使 htmlentities() 函数对其没有任何作用的?
- 我将如何复制它进行测试?(可以通过上面的问题来回答)
我做了一些研究,黑客可能将他的文本编码为 utf-7 或其他什么?
我已经收到了几封带有这些相同链接的电子邮件。这个黑客显然是在测试我的网站,看看他能不能做 XSS 什么的。