跨站脚本攻击(XSS):为什么Cookie中有HttpOnly属性?
什么是 XSS 攻击
XSS 全称是 Cross Site Scripting,为了与“CSS”区分开来,故简称 XSS,翻译过来就是“跨站脚本”。XSS 攻击是指黑客往 HTML 文件中或者 DOM 中注入恶意脚本,从而在用户浏览⻚面时利用注入的恶意脚本对用户实施攻击的一种手段。
最开始的时候,这种攻击是通过跨域实现的,所以叫“跨域脚本”,发展至今,往HTML文件中注入恶意代码的方式越来越多了,不限于“跨域实现”。
恶意脚本有哪些攻击?
- 窃取 Cookie 信息
- 监听用户行为
- 修改 DOM
- 在⻚面内生成浮窗广告
恶意脚本是怎么注入的
通常情况下,主要有存储型 XSS 攻击、反射型 XSS 攻击和基于 DOM的 XSS 攻击三种方式来注入恶意脚本。
-
存储型 XSS 攻击
存储型XSS实现步骤:
首先黑客利用站点漏洞将一段恶意 JavaScript 代码提交到网站的数据库中;
然后用户向网站请求包含了恶意 JavaScript 脚本的⻚面;
当用户浏览该⻚面的时候,恶意脚本就会将用户的 Cookie 信息等数据上传到服务器。 - 反射型 XSS 攻击
在一个反射型 XSS 攻击过程中,恶意 JavaScript 脚本属于用户发送给网站请求中的一部
分,随后网站又把恶意 JavaScript 脚本返回给用户。当恶意 JavaScript 脚本在用户⻚面
中被执行时,黑客就可以利用该脚本做一些恶意操作。
Web 服务器不会存储反射型 XSS 攻击的恶意脚本,这是和存储型XSS 攻击不同的地方。 - 基于 DOM 的 XSS 攻击
基于 DOM 的 XSS 攻击是不牵涉到⻚面 Web 服务器的。
如何阻止 XSS 攻击
我们知道存储型 XSS 攻击和反射型 XSS 攻击都是需要经过 Web 服务器来处理的,因此可
以认为这两种类型的漏洞是服务端的安全漏洞。而基于 DOM 的 XSS 攻击全部都是在浏览
器端完成的,因此基于 DOM 的 XSS 攻击是属于前端的安全漏洞。
阻止 XSS 攻击的策略:
- 服务器对输入脚本进行过滤或转码
- 充分利用CSP
实施严格的 CSP 可以有效地防范 XSS 攻击,具体来讲 CSP 有如下几个功能:
限制加载其他域下的资源文件,这样即使黑客插入了一个 JavaScript 文件,这JavaScript 文件也是无法被加载的;
禁止向第三方域提交数据,这样用户数据也不会外泄;
禁止执行内联脚本和未授权的脚本;
还提供了上报机制,这样可以帮助我们尽快发现有哪些 XSS 攻击,以便尽快修复问题。 - 使用 HttpOnly 属性
由于很多 XSS 攻击都是来盗用 Cookie 的,因此还可以通过使用 HttpOnly 属性来保护我
们 Cookie 的安全。
通常服务器可以将某些 Cookie 设置为 HttpOnly 标志,HttpOnly 是服务器通过 HTTP 响应头来设置的。
此文章为4月Day29学习笔记,内容来源于极客时间《浏览器原理》,学习使我快乐,每天进步一点点💪💪
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net