跨站脚本攻击英文全称是Cross Site Scripting,本来缩写是CSS,但为了与层叠样式(Casading Style Sheet,CSS)区别,所以在安全领域叫做“XSS”。
XSS攻击,通常指黑客通过“HTML注入”篡改了网页,插入恶意脚本,从而在用户浏览网页时,控制用户浏览器的一种攻击。
ps:
sql注入与xss攻击都是因为执行了用户输入的代码导致的漏洞,它们的区别在哪?
直接攻击对象不同:sql注入是服务端的攻击,xss攻击是客户端的攻击
XSS危害:
XSS常被列为是客户端web安全中的头号大敌。因为XSS的破坏力强大,且场景复杂,难以一次性解决。现在业界内打成的共识是:针对不同产生场景的XSS,区分对待。
XSS根据效果的不同可以分为以下几种:反射性XSS、存储性XSS、DOM Based XSS。
第一种类型:反射性XSS
反射型xss只是简单地把用户输入的数据“反射”给浏览器,发出请求时,XSS代码出现在URL中,作为输入提交到服务器端,服务器端解析后响应,XSS代码随响应内容一起传回给浏览器,最后浏览器解析执行XSS代码。这个过程像一次反射,故叫反射型XSS。又叫非持久型XSS。
常见场景:黑客需要通过图片或者某中方式隐藏一个恶意链接,诱拐用户去点击,从而达到攻击效果。
第二种类型:存储性XSS
存储性XSS会把用户输入的数据“存储”在服务端。这种XSS攻击具有很强的稳定性。又叫持久型XSS。
存储型XSS和反射型XSS的差别仅在于,提交的代码会存储在服务器端(数据库、内存、文件系统等),下次请求目标页面时不用再提交XSS代码
常见场景一:黑客写了一篇包含有恶意js的博客文章,文章发表后,所以访问该博客文章的用户,都会在他们的浏览器中执行这段恶意代码,从而遭到攻击。
常见场景二:留言板XSS,用户提交一条包含XSS代码的留言存储到数据库,目标用户查看留言板时,那些留言的内容会从数据库查询出来并显示,浏览器发现有XSS代码,就当做正常的HTML与Js解析执行,于是触发了XSS攻击。
第三种类型:DOM Based XSS
通过修改页面DOM节点形成的XSS,称为DOM Based XSS。