#### 1. 闹事的 DDOS
```
分布式拒绝服务(Distributed Denial of Service)
DDOS(Distributed Denial of Service)的缩写,中文意思是“分布式拒绝服务“攻击。其是由于攻击者利用大量肉鸡(slave)对攻击
目标发动大量请求、导致目标主机耗尽资源或网络资源,从而导致被攻击的目标主机不能为合法用户提供服务。对于一些大型活动
(短时有大量用户访问的),需要做好 DDOS 防范,以及对自身网站服务做好扩容的工作。
```
#### 2. [资料] DDOS 防范
##### DDOS防范
```
在许多黑客题材的电视剧电影中,我们可以看到 DDOS (分布式拒绝服务) 攻击经常出现。DDOS 出镜率之所以高是因为其易攻
难守。十多年过去了,DDOS 攻击仍是业界安全问题中一个难题,当攻击流量超过了服务的网络设备的极限或带宽的最大负荷时,
网站服务将瘫痪导致无法正常运作。
通常来说,对于 DDOS 攻击我们可以通过下面的方式来进行防范。
```
##### 验证码
```
验证码是我们在互联网十分常见的技术之一。不得不说验证码是能够有效地防止多次重复请求的行为。目前来说,随着验证码方式
的丰富化,导致黑客们没有一个比较有效的方式来获取和识别验证码。但由于验证码会影响到用户体验,因此验证码只有在比较
重要的入口才会使用,如转账和登陆的场景。
```
##### 限制请求频率(ratelimit)
```
限制请求频率是我们最常见的针对 DDOS 攻击的防御措施。其原理为设置每个客户端的请求频率的限制。简单来说,就是通过一些标识
(如 IP 与 Cookie)来定位一个客户端,如果该客户端的请求在一定时间内过于频繁。则对该客户端之后的请求都重定向到一个出错
的页面或者封杀相关 IP。
当然许多框架都会有相应地限制请求频率的工具包,如 koa 框架便可以使用下面这些:
koa-limit
koa-ratelimit
```
##### 扩容加带宽
```
简单来说就是,增加机器增加服务带宽。只要超过了攻击流量便可以避免服务瘫痪。在双十一活动或者12306 抢车票等场景时,
网站服务都会对自己的机器进行扩容和提高带宽。然而为了避免由于使用过多机器导致成本太高且浪费的情况。通常来说都是
根据网站活动和请求情况来实施相应扩容操作。
```
##### 其他的方法
```
事实上还有许多其他的方法,根据不同情况都有相应的效果
设置自己的业务为分布式服务,防止单点失效
使用主流云系统和 CDN(云和 CDN 其自身有 DDOS 的防范作用)
优化资源使用提高 web server 的负载能力
```
##### 更多阅读
网上有许多 DDOS 的帖子,大家感兴趣可以阅读下:
互联网创业公司如何防御 DDOS 攻击?:https://www.zhihu.com/question/19581905
漫画告诉你什么是DDoS攻击?:https://www.leiphone.com/news/201509/9zGlIDvLhwguqOtg.html
#### 3. 运营商HTTP劫持
![](https://raw.githubusercontent.com/lz109896/Web-datum/80bf81848c66c84ebf12f1565bf9774cf15ef070/%E9%97%B9%E4%BA%8B%E7%9A%84%20DDOS%20.png)
#### 4. HTTPS 简介
![](https://raw.githubusercontent.com/lz109896/Web-datum/80bf81848c66c84ebf12f1565bf9774cf15ef070/HTTPS%20%E7%AE%80%E4%BB%8B%20.png)
```
HTTPS 对于我们来说其实并不陌生。我们可以看到许多大型的网站如腾讯课堂、淘宝等都是通过 HTTPS 来访问的。
HTTP 明文特性
超文本传输协议 HTTP协议 用于在 Web 浏览器和网站服务器之间传递信息。然而由于 HTTP 协议其特性是在传输过程中是明文方式的,
即不提供任何方式的数据加密。这也导致了当攻击者截取了这之间的传输报文,就可以直接读懂其中的信息和窥视和篡改。这也是 HTTPS
出现的原因。
安全的 HTTPS
为了解决 HTTP 协议的这一缺陷,需要使用另一种协议:HTTPS。为了数据传输的安全,HTTPS 在 HTTP 的基础上加入了
SSL(安全套接字层) 协议,SSL 依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。SSL 标准化改名为 TLS,
SSL/TLS 在传输层对网络连接进行加密。
```
#### 5. HTTPS 原理
```
对称秘钥:加密解密用的同一条密钥
非对称秘钥:密钥成对出现,通常其中一条不公开,叫私钥,另一条是公开的,称为公钥。用其中一条加密的内容只能用另一条解开。
密钥协商过程就是利用非对称加密算法在客户端与服务器之间协商得到对称密钥
```
![](https://raw.githubusercontent.com/lz109896/Web-datum/80bf81848c66c84ebf12f1565bf9774cf15ef070/HTTPS%20%E5%8E%9F%E7%90%86%201.png)
![](https://raw.githubusercontent.com/lz109896/Web-datum/80bf81848c66c84ebf12f1565bf9774cf15ef070/HTTPS%20%E5%8E%9F%E7%90%86%202.png)
![](https://raw.githubusercontent.com/lz109896/Web-datum/80bf81848c66c84ebf12f1565bf9774cf15ef070/HTTPS%20%E5%8E%9F%E7%90%86%203a.png)
![](https://raw.githubusercontent.com/lz109896/Web-datum/80bf81848c66c84ebf12f1565bf9774cf15ef070/HTTPS%20%E5%8E%9F%E7%90%86%204.png)
#### 6. [资料] 更多安全内容
```
更多安全内容
在本章,我们讲了 XSS,CSRF 攻击和防御,还有介绍 DDOS,HTTPS 相关内容,相信大家对 Web 安全已经有了初步的认识了。
当然,我们这里介绍主要是比较常见的而且是偏前端的 Web 安全知识,实际上 Web 安全很多其他方面,因为内容限制我们在
课程就不给大家一一展开,感兴趣的可以根据下面的指引继续了解。
点击劫持
点击劫持实际上就是在正常界面上覆盖一层透明的内容,引导用户在不知情的情况下进行了某些操作,这些操作可能是广告点击,
或者是开启摄像头等操作,甚至可能会导致一些数据别窃取,也有可能结合 XSS 和 CSRF 进行更负责的攻击。
服务端安全
除了前端注意安全,后端也需要对安全进行防范,常见比如防止 SQL 注入,登录会话管理等。
更多阅读
身为一名前端工程师,要学会如何去保护好自己的网站。
web安全之--点击劫持攻击与防御技术简介:https://www.jianshu.com/p/251704d8ff18
《白帽子讲 Web 安全》相关内容
```
- Part 0:开启你的Web前端之旅
- 学习大纲
- Part 1:HTML 基础
- 认识HTML
- HTML元素
- 专业级开发环境
- 嵌套及HTML树
- Part 2:CSS 基础
- CSS 盒子
- CSS 基础
- 锻造利器——编辑器
- 属性和值
- 选择器
- 样式计算
- Part 3:HTML CSS
- CSS动画
- CSS布局
- CSS预处理
- 响应式
- Part 4:JS 基础
- BOM
- DOM
- JavaScript 语言基础
- jQuery 简单教程
- 流程控制
- 事件
- Part 5:JS 进阶
- Canvas进阶
- canvas入门
- 创建对象
- 继承
- Part 6:性能与工程
- nodejs简介
- 工程化
- 浏览器渲染简述
- 模块化
- 性能
- 网络通路简介
- Part 7:JS 应用开发
- Ajax
- React
- 设计模式
- 正则表达式
- Part 8:项目中的测试
- Jest
- 基本概念
- Part 9:安全攻防战
- Cookie
- CSRF
- XSS
- 更多安全
- Part 10:面经大放送
- 面试经验