作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个带有文本框的表单,该表单将数据发布到一个 php 文件,该文件使用“htmlentities”函数来安全地向网站所有者发送电子邮件。
问题是有人设法获得文本中的超链接,而 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" />
但是黑客的文本并不是这样编码的。
所以我的问题是:
我做了一些研究,黑客可能会用 utf-7 或其他方式对他的文本进行编码?
我已经收到了几封带有这些相同链接的电子邮件。这个黑客显然是在测试我的网站,看他是否可以做 XSS 之类的。
最佳答案
好问题!我想你可以阅读这个 link解释问题并给出解决方案。
建议的解决方案是向浏览器指定(通过元标记)页面中使用的字符集。
关于PHP htmlentities 不足以阻止黑客从表单中注入(inject) html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14260665/
我正在创建一个使用 svg 作为::after 内容的标签。我希望通过使用绝对定位将 svg 移动到主要内容下方并将其设置为 bottom: 0,但是如果我也将 margin-bottom 设置为 -
我是一名优秀的程序员,十分优秀!