【问题标题】:HTML attributes that can contain javascript可以包含 javascript 的 HTML 属性
【发布时间】:2015-03-07 07:01:13
【问题描述】:

我正在寻找一个包含所有 html 属性的简单列表,这些属性可以包含在执行操作时会自动运行的 javascript。我知道这在浏览器和版本之间会有所不同,但我宁愿安全也不要后悔。我目前知道以下 javascript 属性:onloadonclickonchangeonmouseoveronmouseoutonmousedownonmouseup

背景故事: 我从不受信任的来源获取完整的 html 文档,我想删除所有可以从原始 html 文档运行的 javascript,因此我要删除所有脚本标签以及任何可以在 javascript 显示在 iframe 之前保存它的属性.对于这种植入,没有服务器端处理,也无法对代码进行沙箱处理,因为我需要运行在删除所有原始 javascript 后在本地添加的 javascript。

【问题讨论】:

  • html5sec.org找到一些有用的信息和检查
  • 您可能应该只使用经过彻底测试的 HTML sanitizer 库。

标签: javascript html


【解决方案1】:

有两个地方可以在 HTML 属性中使用 Javascript:

  1. 任何onEVENT 属性。我建议将任何以on 开头的属性视为事件绑定,并将它们全部删除。

  2. 如果 URI 使用 javascript: 方案,例如 hrefsrc,任何可以包含 URI 的属性都将作为 Javascript 执行。完整列表在

COMPLETE list of HTML tag attributes which have a URL value?

【讨论】:

  • 我还没想过要验证 URI 属性,你知道用 Javascript 有什么好的方法吗?
  • 查看属性值是否以javascript:开头即可。
  • 谢谢,我认为我仍然缺少 css 中的一些攻击向量,但这是一个好的开始。
  • 我认为它可以出现在 CSS 中的唯一位置是允许 url(...) 值的样式。所以寻找url(javascript:...)
  • 它有点复杂owasp.org/index.php/… 但我的主要问题是如何验证外部 css 文件。
【解决方案2】:

http://www.w3.org/TR/html401/interact/scripts.html#h-18.2.3

向下滚动到 18.2.3 内在事件

我在一个项目中有类似的要求。不要忘记剥离脚本元素。

【讨论】:

  • 不包括href="javascript:..."src="javascript:..."
  • 我虽然应该有一个简单的列表,但我找不到它。感谢您的链接。
  • 也使用这个:w3.org/TR/html52/…。否则你会错过很多全局事件处理程序。
猜你喜欢
  • 1970-01-01
  • 2010-11-20
  • 2012-08-26
  • 2012-07-12
  • 2021-10-15
  • 1970-01-01
  • 2021-06-26
  • 1970-01-01
相关资源
最近更新 更多