【发布时间】:2012-11-19 06:48:02
【问题描述】:
我将用户生成的 HTML 传递到数据库中,并试图确保没有恶意代码通过。我正在采取的步骤之一是通过 pear 的 HTML_Safe 类运行传递的代码以删除易受攻击的标记。然而,我注意到的一件事是提交元素的name 属性被删除。果然,看源码,name是少数几个默认被列入黑名单的属性之一:
http://pear.php.net/package/HTML_Safe/docs/latest/HTML_Safe/HTML_Safe.html#var$attributes
允许用户为name 传递值有什么危险? name 的值如何被用于邪恶目的?有什么想法吗?如果没有,我很想修改黑名单。
【问题讨论】:
-
可能是因为一般来说表单并不是人们真正需要发布的那种东西。
-
在很多情况下,允许用户通过直接 DOM 操作来构建表单内容会派上用场。问题是除了“如果表单元素最终包含其中的代码,它最终可能会被提交”之外,是否还有其他需要担心的事情......这很容易通过简单地防止
echoing表单元素中发布的代码(form标签已经被列入黑名单,所有 js 也是如此,所以你必须非常草率才能最终提交inputs最终被提交) -
This article 暗示
name和id在某些浏览器中有时可能表示相同的意思,因此可能被认为是危险的。
标签: php attributes html-parsing pear html-sanitizing