页面脚本中的 HTML Entities 转化问题
这篇东西 说了 Twitter 上存在的一个 XSS 漏洞,而这个漏洞是由于没能对嵌入页面中的、动态生成的 JavaScript 代码进行有效的 HTML entities 过滤而引起的。对于动态页面中那些用户输入的字符串,仅是把 '"<>\ 转换为 html entities 还是不够的;例如 <a href="some_uri" onclick="custom_function('[user_input]')">some text</a> 这般的代码,假设 [user_input] 是 ');alert(1),', 而仅是把 ' 转换为 html entities —— ' 是不够的,因为在嵌入页面的 JavaScript 中,转换为 html entities 的字符仍是有效脚本中的一部分,脚本仍然是可以运行的。
针对这个问题,暂时我想到的解决办法有两种,但都基于同一个原理:经转换后的数据不在生成页面时嵌入 JavaScript 代码中去,而仅是嵌入到一个指定的元素中去;在页面载入后,通过 DOM 读取该元素中的数据,然后再进行其他操作。
我写的样例代码见这里:http://pastebin.com/f333cc832
针对这个问题,暂时我想到的解决办法有两种,但都基于同一个原理:经转换后的数据不在生成页面时嵌入 JavaScript 代码中去,而仅是嵌入到一个指定的元素中去;在页面载入后,通过 DOM 读取该元素中的数据,然后再进行其他操作。
我写的样例代码见这里:http://pastebin.com/f333cc832


0 条评论:
发表评论
订阅 博文评论 [Atom]
<< 主页