Web 开发安全 — 青训营笔记

96 阅读2分钟

这是我参与[第五届青训营]伴学笔记创作活动的第12天

课程概要

攻击篇

  1. Cross-Site Scripting(XSS)
  2. Cross-Site request forgery(CSRF)
  3. Injection
  4. Denial of Service(Dos)
  5. Distributed Dos(DDoS)
  6. 中间人攻击

防御篇

  1. XSS的防御
  2. 防御CSRF的正确姿势
  3. 防御Dos
  4. 防御Injection
  5. 防御中间人

安全问题“很常见”,会危害

  • 用户
  • 公司
  • 程序员(祭天)

两个角度看web安全

  • 假如你是一个hacker——— 攻击
  • 假如你是一个开发者——防御

# 攻击篇

一、跨站脚本攻击

ace3d4081e46f5814cda3122c441576.png

42ce80b90d9686e3c1cfafd5ebe57da.png

xss主要利用了

9666171a90e4d6641a56dce2b5c6fce.png

xss的一些特点

279cc47ec00df1c167f141c9c22ad02.png

xss demo

bed43198893992a40ffaf7c65970d4b.png 假如我是攻击者 html被插入了标签 完成了一次攻击

08647481e1911ae8fcccbeaaaf30193.png

二、xss分类

(一)存储型数据攻击

943aef1e579da4c5014269d2193a049.png

(二)反射型攻击 不涉及数据库

f097e4454fe51fec6b26a26e5881cb0.png

Reflected XSS Dome 攻击者把这个构造成恶意标签 ,不需要服务器的参与 攻击发起 参与直接由浏览器完成 f42220d00045e45c876ee03d89d1e43.png

(三)基于dom的xss攻击

42d67e7d76a3e0b706ef2e4012f6c94.png

ce2ea777f300f3ecaf4bedc26d7962f.png

(四)Mutation-bassed XSS

90a87cc04de29c12b8a7c5c3033feb6.png

利用浏览器渲染DOM的特性 html片段 xss过滤属性中会把这个标签识别为正常标签 d071c0e27d736f524b2eda76f1f8cb8.png

三、Cross-site forgery(CSRF)

跨站轨道请求 应用用户权限 375959e4b97c94b1629df6f0d465709.png

08d04e069da83f83c456a23d1b43a0b.png

最常见的形式 d5e7a4a28422b19377277982fcce58b.png

四、Inflection

9b2877a699f40fc6d83afb3d9afc85e.png

最常见的注入

3bf18d5014545e2f9283874ffd6c884.png Inflection Dome1

d5f8584e06bbb317d9736efcc5db0e2.png

4b143214d2942cc8f1ed78b6d4a83b0.png

Inflection Dome2

af701de9d7edd089b5c6415bd8e3224.png

d869b370349e9848b259d9504261a2f.png

Inflection Dome2- 读取修改

39e0e71fc75ce167cbecee76175ba81.png

29838395a1c9be3351b6b4cea0464ae.png

56ab7e266053b31a0eae1a734b92989.png

五、Denial of Service(Dos)

617bb3b6ef35dcc06f2130053781f6c.png

(一)、贪婪模式

00db2d35db625fd16e6c296b65cc1bb.png

(二)、回溯贪婪模式

cb345a81585bdbf9989c0f6077fbad2.png

(三)、Distributed Dos(DDos)

579b705bf4af51504fd986e81900c16.png

六、中间人攻击

运用

  1. 明文传输
  2. 信息篡改不可知
  3. 对方身份未验证 05fcce86648d341dd776cdbc2f76caf.png

## 防御篇

一、XSS的防御

ca2ec627e19854fd73b84ac19884642.png 永远不信任用户提交的内容 不要将用户提交内容直接转换为DOM

(一)、XSS防御的现成工具

1.c7f095293d6397b578208fdb6e193e8.png

2.如果非要生成DOM

8d7a3f50ab5fa3f50115ebbd86b83f2.png

(二)、三种方式防御

1.

870d467b2f1e28e0d9751c2a31cb0ee.png

2.

2ae4ad671a1bce3dabee8617c058a1b.png

3.

450108565486d2aededd9c09a072064.png

插播:

4260de7a32a4d2a9416457c5a407955.png Same-origin Policy必须同源

比如:

ea79848d80f0c397f465987e4669d91.png

c2834470a7675e0fa97f54aff76e8d8.png 响应头部服务器,此外一切都不可以

二、防御CSRF的正确姿势

(一)、CSRF的防御

57e9d69adba16156eb26ee3bf3ad83e.png

(二)、判断来自合法来源

45bdc4572916ca25fd0190b888fbde2.png

7c4c4f1fab1b6a27f8585db0a7fa9f5.png 绕过Origin的攻击,没有跨域而是同源请求。

(三)、具体实践流程思路:

867e07ce15b5d7270d1f4b57fea202e.png

注:

b6fec9b7a2216c3a085ba42437b4816.png GET!==GET+POST 获取与修改数据同时进行 ,up和get如果被攻击,用户的数据和隐私都会泄露

(四)、另一种防御CSRF的手段

21a01f0acfd835c29e1ea1014592088.png

4b4267a033e7712459b6f923ae9a900.png 页面的cookie只能为我所用,

ac6cc986def7de51188e2b301fb626a.png

如果是第三方服务器怎么办 SameSite=None;标为Secure

(五)、SameSite和CORS的区别

0072ba627f1ece1b56268c223cc82c9.png

举例:

1f80cbb52d3abe294c31285aeff9e97.png

(六)、防御CSRF的正确姿势

aadd254cef30b1593b00ebdf1c5a116.png

三、防御Dos

(一)、防御DDos的方式

- 过滤

-抗量

e5a080a0e18ff38f5d7f3f66700cb50.png

避免贪婪匹配模式

45f293ea6a76dacc62a029d61cee6c3.png

四、防御Injection

26e08e22714414b249eaee97c8764c0.png

方式: b02a0337d38154ee339727177ece057.png

五、防御中间人

220c41f34ca8efc12591dd14285baf4.png

HTTPS的特性

598ffb83321e4d5b7b3935295b38683.png 避免明文传输

1.完整性

2483580b413dbde6aeafba94c29414d.png

2.数字签名

ffbf9b8c0bfef7ad0d83197c945342e.png

f6d4dbc6a5d6dd2383dc7a1c59b801c.png

3.证书

f60e928cc7abec50bf8bd9bca919237.png

7e26bb136b8145dad7c93bd64b7c2e3.png

21c3b15a336d5c71634549c1a127c31.png

HTTPS的流程

0d25c3aefa973379a05608a1a3b8ab3.png

HTTP升级到HTTPS

27c6102b5dbc2519510f73fabb59103.png

防御:静态资源托管

3561b29dfa36ec80a09aac8295911bd.png

SRI伪代码

70dbe2eb8ea134253df82e98fd039ad.png

5a0120e75b5cbb08027f9c5227d0421.png

补充内容:

Feature Policy

32d7cdaefdecf181f0f811d38124cf8.png 不小心被攻击,可以限制敏感信息不泄露

总结:

安全无小事