概念
XSS,全称是 跨站脚本攻击
(Cross-site scripting),为了不和层叠样式表(CSS)的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意的 script 代码,当用户浏览该页之时,嵌入其中的 script 代码会被执行,从而达到恶意攻击用户的目的,如盗取用户的 cookie 等敏感信息。
类型
存储型 XSS
数据库中存有的存在XSS攻击的数据,返回给客户端。若数据未经过任何转义。被浏览器渲染。就可能导致XSS攻击。
反射型 XSS
将用户输入的存在XSS攻击的数据,发送给后台,后台并未对数据进行存储,也未经过任何过滤,直接返回给客户端。被浏览器渲染。就可能导致XSS攻击。
DOM XSS
纯粹发生在客户端的XSS攻击,比如:
|
|
页面代码:
|
|
该XSS攻击实现条件:
(1)用户点击了如下连接:
|
|
(2)后台对URL参数未做任何过滤处理,返回给客户端,前端直接从url上获取参数。
(3)打开网址的浏览器是低版本浏览器,常见ie8以下。
满足以上三者,就会导致URL上的js代码执行:alert(document.cookie),但是攻击者可以利用这个,做你无法想象的事情。在现代浏览器中,已经做了xss过滤,一旦检测到xss,会提示报错如下:
|
|
以上便是学术上的划分的XSS攻击类型,2、3类型其实都是反射型的攻击。了解了这些,意识到XSS攻击无处不在啊。
防御方法
(1)从输入和输出进行过滤和转义。可以使用 htmlspecialchars() 等函数进行过滤转义,当然,一些文件上传等,也可能会造成此攻击,要限制上传文件的类型,比如只能传图片等。
参考文章: