XSS知识的小汇总
1. XSS是什么
XSS就是跨站脚本攻击,全称是Cross-Site Scripting,简称不是CSS是因为和层叠样式表重名了所以改称为XSS,其中X是代表未知并且有扩展的含义。XSS攻击涉及到三个方面:攻击者、用户、web server。
其中用户是通过浏览器来访问web server上的网页,XSS攻击就是攻击者通过各种办法,在用户访问的网页中插入自己的脚本,让其在用户访问网页时在其浏览器中进行执行。攻击者通过插入的脚本的执行,来获得用户的信息,比如cookie,发送到攻击者自己的网站(跨站了),所以这种攻击被称为跨站脚本攻击,即在用户的浏览器中执行攻击者自己定制的脚本。
2.XSS的类型
XSS可以分为反射型XSS、持久性XSS、DOM Based XSS。
2.1 反射型XSS
反射性XSS也称为非持久性XSS,它是用户点击攻击链接,服务器解析后响应,在返回的响应内容中出现攻击者的XSS代码,被浏览器去执行。XSS攻击脚本被web server反射回来给浏览器执行,所以称为反射型XSS。它没有保存在web server中,而是出现在URL地址中,一般是攻击者通过邮件,聊天软件等等方式发送攻击URL,然后用户点击来达到攻击的;
2.2 持久型XSS
和反射型不同的是这种XSS攻击是将恶意代码存储在web server中,这样每个访问特定网页的用户都会被攻击到,一般是通过网站的留言、评论、博客、日志等等所有能够向web server输入内容的地方,将攻击代码存储到web server上的;
有时持久性XSS和反射型XSS是被同时使用的,比如先通过对一个攻击url进行编码来绕过xss filter,然后提交该web server并存储在web server中,最后在用户浏览特定页面如果点击该url,就会触发一个XSS攻击,同时当用户点击该url的时候,也可能会触发一个CSRF(Cross site request forgery)的攻击。
2.3 DOM based XSS
这种XSS攻击是基于DOM的XSS攻击,是只涉及到浏览器的XSS攻击。比如根据用户的输入来动态构造一个DOM节点,如果没有对用户的输入进行过滤,那么也就导致XSS攻击的产生,过滤可以考虑采用esapi4js进行过滤。
3. XSS 攻击的防御
XSS防御的总体思路是:对输入(和URL参数)进行过滤,对输出进行编码,也就是对提交的所有内容进行过滤,对url中的参数进行过滤,过滤掉会导致脚本执行的相关内容,对动态输出到页面的内容进行html编码,使脚本无法在浏览器中执行。采取这些方法虽然对输入过滤可以被绕过,但是也还是会拦截很大一部分的XSS攻击。
对于输入的防御处理使用XSS filter之外,需要对于在客户端和服务器端进行各种入参验证,需要验证字符的合法性、长度、格式等等,即分为黑名单和白名单,黑名单表示验证中不能出现某些字符,白名单表示可以出现的字符;对于输出数据的防御,可以对存在潜在威胁的字符进行编码、转义。
总的来说输入防御可以采用AntiSamy提供的XSS Filter来实现,对输出进行防御可以采用ESAPI提供的编码来实现。
- 点赞
- 收藏
- 关注作者
评论(0)