XSS (Cross Site Scripting) 中文名叫做 “跨站脚本攻击”。
XSS攻击是指黑客向HTML文件或者DOM中添加恶意脚本,从而在用户浏览页面时,利用插入恶意代码对用户实施攻击。
XSS攻击主要分为:
- 存储型XSS攻击
黑客向存在漏洞的服务器插入一段恶意JS代码,当用户向服务器请求资源的时候就会请求到该恶意JS脚本。用户浏览页面的时候用户的Cookie等信息就会被上传到服务器。黑客拿到了用户的cookie等信息后,就可以在别的设备登陆进行一些恶意操作。
- 反射型XSS攻击
用户将一段包含有恶意代码的请求提交给web服务器,web服务器又将这段恶意代码反射给浏览器端。 常见的有QQ群和QQ邮件中一些诱导用户点击的恶意链接。
- 基于DOM的XSS攻击
基于DOM的XSS攻击是不涉及到web服务器的,而是黑客通过某些手段将恶意代码直接注入到用户的页面中。有可能是通过网络劫持在页面传输过程中修改了HTML页面的内容。或者通过本地的恶意软件劫持等方法。他们共同的特点是在web资源传输过程中或者用户使用页面过程中修改了web页面的数据。
常见的阻止方法:
- 服务器端对输入脚本进行过滤或编码
过滤是将标签内的内容过滤掉,这样恶意的JS代码也就无法执行了
转码是将"<",">"进行转码
- 充分利用CSP等策略
CSP:内容安全策略 CSP的核心思想在于让服务器决定浏览器能够加载哪些资源
原理: 浏览器请求资源的时候,服务器会告诉浏览器哪些文件可以执行,哪些不可以执行
- 设置HttpOnly
服务器可以将cookie设置为HttpOnly,HttpOnly可以保障Cookie只在http连接中被获取,这样的话恶意的JS代码就无法获取到用户的cookie了。