XSS漏洞的危害
- 植入键盘记录器。
- 攻击受害者所在的局域网。
- 代理转发流经被攻击者的所有Web流量,即实施中间人攻击。
- 窃取或篡改应用cookie用于会话劫持。
- 更改被攻击者Web应用的显示内容。
- 绕过CSRF安全防护措施。
- 创建包含恶意JavaScript代码的虚假网站以及到该网站页面的链接。
- 发送嵌入恶意Web URL的电子邮件。
- 使用URL短码隐蔽真实URL。
XSS攻击解决办法
请记住两条原则:过滤输入和转义输出。
具体执行的方式有以下几点:
第一、在输入方面对所有用户提交内容进行可靠的输入验证,提交内容包括URL、查询关键字、http头、post数据等。
第二、在输出方面,在用户输内容中使用<XMP>
标签。标签内的内容不会解释,直接显示。
第三、严格执行字符输入字数控制。
四、在脚本执行区中,应绝无用户输入。
XSS漏洞的危害有以下这些:
植入键盘记录器。
攻击受害者所在的局域网。
代理转发流经被攻击者的所有Web流量,即实施中间人攻击。
窃取或篡改应用cookie用于会话劫持。
更改被攻击者Web应用的显示内容。
绕过CSRF安全防护措施。
创建包含恶意JavaScript代码的虚假网站以及到该网站页面的链接。
发送嵌入恶意Web URL的电子邮件。
使用URL短码隐蔽真实URL。
防御XSSI攻击的必要条件有以下这些:
如果网站返回“X-Content-Type-Options:nosniff”HTTP头部的话,那么该攻击就会偃旗息鼓了。所以,最简单的防御措施,就是让它返回这个头部。服务器可以通过nosniff头部告诉浏览器,“当我说将给你<Content-Type>时,就意味着这是真的<Content-Type>!”。
脚本标签只能用于GET请求。因此,如果端点只接受POST请求,则此攻击就无能为力了。这个要求看似简单,但务必要小心。您可能已经设计了只接收POST请求的API,但您的内容管理系统也许仍然可以接收GET请求。
如果端点始终返回200,那么也就无法从状态码中窃取信息了。但是,状态码的存在,不要仅仅为了阻止这种攻击而简单粗暴地废弃了HTTP协议的核心部分。请改用nosniff头部来阻止该攻击。
如果攻击者能够在自己的浏览器中加载私密信息,那么他就不需要这种攻击了。该攻击主要是设法让用户访问攻击者的域,然后以用户在其他域的权限来获取更多信息,这通常要求用户已经经过了相应的认证。除此之外,如果您的家庭路由器有此漏洞,那么恶意公共站点可以通过它请求脚本,从而导致信息泄漏。