这是我参与「第四届青训营 」笔记创作活动的的第11天
今天学习的是Web的开发之旅,在开发中Web安全问题其实很常见,但一旦出现安全问题,就会对用户、公司甚至程序员带来无可挽回的损失。老师从攻击、防御两个视角,简要介绍前端范畴内常见的安全问题,包括XSS、CSRF、SQL注入、DOS等。
攻击
Cross-Site Scripting(XSS)跨站脚本攻击
XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序,这些恶意网页程序通常是JavaScript。攻击成功后,攻击者可能得到包括但不限于更高的权限(如执行一些操作)、私密网页内容、会话和cookie等各种内容。
XSS的特点
- 通常难以从 UI 上感知 (暗地执行脚本)
- 窃取用户信息 (cookies/token)
- 绘制 UI (例如弹窗),诱骗用户点击/填写表单 最常见的几种分类:反射型(非持久型)XSS、存储型(持久型)XSS、DOM型XSS、通用型XSS、突变型XSS。
反射型XSS
反射型XSS只是简单的把用户输入的数据从服务器反射给用户浏览器,要利用这个漏洞,攻击者必须以某种方式诱导用户访问一个精心设计的URL(恶意链接),才能实施攻击。
存储型XSS
DOM型XSS
突变型XSS
其攻击流程:将拼接的内容置于innerHTML这种操作,在现在的WEB应用代码中十分常见,常见的WEB应用中很多都使用了innerHTML属性,这将会导致潜在的mXSS攻击。从浏览器角度来讲,mXSS对三大主流浏览器(IE,CHROME,FIREFOX)均有影响。
CSRF 跨站域请求伪造
- 在用户不知情的前提下
- 利用用户权限 (cookie)
- 构造指定 HTTP 请求,窃取或修改用户敏感信息
SQL 注入
Sql 注入攻击是通过将恶意的 Sql 查询或添加语句插入到应用的输入参数中,再在后台 Sql 服务器上解析执行进行的攻击,它目前黑客对数据库进行攻击的最常用手段之一。
Sql 注入带来的威胁主要有如下几点
- 猜解后台数据库,这是利用最多的方式,盗取网站的敏感信息。
- 绕过认证,列如绕过验证登录网站后台。
- 注入可以借助数据库的存储过程进行提权等操作
Dos
通过某种方式 (构造特定请求),导致服务器被显著消耗,来不及相应更多请求,导致请求挤压,进而雪崩效应。
Dos有基于正则表达式的Dos,往往就是由于贪婪造成的。
DDoS (Distributed Dos)
短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。
攻击特点:
- 直接访问 IP
- 任意 API
- 消耗大量带宽 (耗尽)
还有一种就是中间人攻击
防御
XSS
措施:
- 永远不要信任用户的提交内容
- 不要将用户提交内容直接转换成 DOM
CSRF
DDoS
尾声
- 安全无小事
- 使用的依赖 (npm package,甚至是 NodeJS)可能成为最薄弱的一环
!!npm install除了带来了黑洞,还可以带来漏洞 - 保持学习心态