作为构建网络应用程序的一部分,有一个iframe允许当前登录的用户编辑一些内容,这些内容只会显示在他们自己的登录配置文件中,或者显示在没有的公共页面上登录用户。
因为这意味着只有输入内容的用户或公共网站上的用户才能查看内容,这是否意味着XSS的风险是多余的?如果他们只能将javascript注入他们自己的页面,那么他们只能访问自己的cookie是吗?然后,如果我们在没有登录用户概念的公共页面上显示该内容(在不同的子域上),那么没有cookie可供访问,对吗?
或者我对XSS危险的简单看法不正确?
安东尼
答案 0 :(得分:1)
窃取授权cookie信息实际上并不是JavaScript注入可以给其他用户带来的唯一伤害。重定向,表单提交,恼人的警报和不可数的其他坏事都可能发生。您不应该信任用户提供的html内容,也不应该将其显示给其他人。 为了避免html注入并同时允许用户提供html,一般的想法是拥有预定义的html标记集,这些标记可以对其他用户没有任何伤害,例如一些文本或分区段落,但不是未经检查的图像和JavaScript的。您解析提供的HTML并删除除这些标记之外的所有标记。
您可以使用HtmlAgilityPack或任何其他可帮助您解析用户提供的html的库。您可以过滤掉并删除任何不需要的来源,只留下安全标记。
答案 1 :(得分:1)
攻击者通常会在攻击网站时使用多个漏洞。允许用户自己进行XSS有几个问题。
CSRF - 用户可以访问将恶意数据发布到其个人资料中的恶意网站,从而进行XSS。
点击劫持内容 - 请参阅http://blog.kotowicz.net/2011/07/cross-domain-content-extraction-with.html
接下来,如果该内容显示在公共页面上,它可以将用户重定向到包含自动接管用户计算机的漏洞的不同站点,或者他们可以重定向到色情内容。