1.1 反射型
攻击步骤: 攻击者将恶意XSS代码写在目标网站url的search中,将url发给受害者受害者用户打开该页面,XSS代码作为输入提交到服务端,服务端将XSS代码从url中取出拼接到html中返回给浏览器浏览器解析html的同时会执行XSS恶意代码恶意代码执行后,获取用户信息并发送到攻击者的服务器攻击者使用受害者的用户信息调用网站接口,进行违法操作 防御措施:后端对提交数据进行处理1.2 DOM -base型
攻击步骤: 攻击者将恶意XSS代码写在目标网站url的search中,将url发给受害者受害者用户打开该页面,目标网站前端使用js取出url中的恶意代码并执行恶意代码执行后,获取用户信息并发送到攻击者的服务器攻击者使用受害者的用户信息调用网站接口,进行违法操作 防御措施: 后端对提交数据进行处理前端将 html代码script代码 转义为普通文本后进行提交(正则替换标签名的箭头)注:DOM-based型类似于反射型,区别是DOM-based型是在浏览器解析,而反射型是在服务端解析
1.3 存储型
攻击步骤:
攻击者将恶意代码提交到目标网站的数据库中(如论坛输入框中输入恶意代码并保存在该页面)用户打开该页面,恶意代码再浏览器中执行恶意代码执行后,获取用户信息并发送到攻击者的服务器攻击者使用受害者的用户信息调用网站接口,进行违法操作防御措施:
后端对提交的数据进行过滤前端将 html代码script代码 转义为普通文本后进行提交(正则替换标签名的箭头)整体的防御措施:
cookie安全策略: 在服务端设置cookie的时候,设置 http-only ,这样就可以防止用户通过js获取cookie http-only: 只允许http或https请求读取cookie,js代码无法读取cookie,发送请求时自动发送cookie secure-only: 只允许发送https请求时读取,发送请求时自动发送cookie host-only: 只允许主机域名与domain设置完全一致的网站才能访问该cookie对HTML编码:页面某个标签中的内容,需进行html编码,将标签箭头<>等用正则转为纯文本,使script脚本无法执行对HTML Attribute编码:html标签的属性,也需要进行编码对URL进行编码