为什么`NAME`属性被认为是不安全的?

时间:2012-12-01 01:44:32

标签: php attributes html-parsing pear html-sanitizing

我将用户生成的HTML传递到数据库中,我正在尝试确保没有恶意代码通过。我正在采取的一个步骤是通过pear的HTML_Safe类运行传递的代码来删除易受攻击的标记。但是,我注意到的一件事是提交元素的name属性被删除。当然,当您查看源代码时,name是默认情况下被列入黑名单的少数几个属性之一:

http://pear.php.net/package/HTML_Safe/docs/latest/HTML_Safe/HTML_Safe.html#var$attributes

允许用户传递name的值有什么危险?如何将name的值用于恶意目的?有什么想法吗?如果没有,我很想修改黑名单。

1 个答案:

答案 0 :(得分:2)

在HTML表单元素中,name属性用作标识符。因此,如果您允许name,那么有人可能会使用他们自己的您的 HTML name属性(您可能已经使用过)。找到的第一个匹配name通常是Javascript或服务器端处理使用的匹配项。

这将允许某人利用您可能正在使用的任何可能的Javascript或服务器端表单处理引用找到的第一个匹配的name属性。

不仅可以使用name的表单元素,而且它们是最不安全的元素。

另一个覆盖问题是如果你在任何函数中使用Javascripts getElementsByName(如下所述),你最终可能会得到一个不符合预期的函数。

修改:有关getElementsByName问题的一些更正和说明(如下所述)。