XSS名称为跨站脚本(cross site script),为了不和CSS弄混所以叫XSS。
一.XSS攻击有三种类型,分别的储存型,反射型和文档型。
1.存储型
存储型,就是将恶意脚本存储到服务端是数据库中,然后通过在客户端执行这些脚本,从而
达到攻击的效果。
2.反射型
反射型就是将恶意脚本作为网络请求的一部分,就是将恶意脚本作为网络请求地址中的参数,这样服务器就可以接收到恶意脚本参数,然后返回给浏览器端,浏览器将这些内容作为HTML的一部分解析,发现该参数是一个脚本,就会立即执行,然后就达到了攻击的效果。
3.文档型
文档型并不会经过服务端,而是作为中间人角色,通过数据传输过程中劫持到网络数据包,然后修改里面的HTML文档,从而达到攻击的效果。
二.防范措施
上面的解释让我们懂得了XSS攻击的原理,很容易可以看出来XSS攻击都是让恶意脚本在浏览器端执行的。所以我们如果要防范XSS攻击,就要阻止恶意脚本的执行。
方法1.对于用户的输入进行转码或者过滤。进行转码后,恶意脚本在HTML解析过程中是无法执行的。也可以用关键词进行过滤,将srcipt标签进行过滤。
方法2.使用CSP,即内容安全策略(Content-Security-Policy),它可以决定浏览器加载哪些内容,
例如:
1.限制其他域下的资源加载
2.禁止向其他域提交数据
3.提供上报机制,能帮助我们及时的发现XSS攻击
方法3.利用HttpOnly,XSS攻击大多数都是为了窃取Cookie,通过设置HttpOnly属性后,JS便无法获取Cookies,这样也可以防范XSS攻击。