我将用户生成的HTML传递到数据库中,我正在尝试确保没有恶意代码通过。我正在采取的一个步骤是通过pear的HTML_Safe类运行传递的代码来删除易受攻击的标记。但是,我注意到的一件事是提交元素的name
属性被删除。当然,当您查看源代码时,name
是默认情况下被列入黑名单的少数几个属性之一:
http://pear.php.net/package/HTML_Safe/docs/latest/HTML_Safe/HTML_Safe.html#var$attributes
允许用户传递name
的值有什么危险?如何将name
的值用于恶意目的?有什么想法吗?如果没有,我很想修改黑名单。
答案 0 :(得分:2)
在HTML表单元素中,name
属性用作标识符。因此,如果您允许name
,那么有人可能会使用他们自己的您的 HTML name
属性(您可能已经使用过)。找到的第一个匹配name
通常是Javascript或服务器端处理使用的匹配项。
这将允许某人利用您可能正在使用的任何可能的Javascript或服务器端表单处理引用找到的第一个匹配的name
属性。
不仅可以使用name
的表单元素,而且它们是最不安全的元素。
另一个覆盖问题是如果你在任何函数中使用Javascripts getElementsByName
(如下所述),你最终可能会得到一个不符合预期的函数。
修改:有关getElementsByName
问题的一些更正和说明(如下所述)。