Web开发的安全之旅 | 青训营笔记

54 阅读2分钟

今天是我参加青训营笔记活动的第三天

假如你是一个hack-攻击篇

1.Cross-Site Scripting(XSS)

比如外部引入标签
XSS主要利用了[盲目信任用户提交内容]
如直接将用户的字符串直接转换成DOM --stringDOM(document.write,element.innerHTML=anything,SSR(user_data))
XSSdemo

1659340063762.png没有用户提交内容过滤,可以直接提交恶意脚本

Store XSS

-恶意脚本被存在数据库中
-访问页面->读数据===被攻击
-危害最大,对全部用户可见

Reflected XSS

-不存在数据库中
-直接攻击url

DOM-based XSS

-攻击浏览器
-和Reflected XSS不同的地方主要取决于注入脚本的地方

1659340349319.png

Mutation-based XSS

-利用了浏览器渲染DOM的特性(单独优化)
-不同浏览器,会有区别(按浏览器进行攻击)

2.Cross

-在用户不知情的前提下
-利用用户权限(cookie)
-构造指定HTTP请求,盗取或修改用户敏感信息

3.Injection(注入)

-不止攻击数据库也攻击CLI,OS command或者服务端伪造请求

4.Distributed Dos

短时间内,来自大量的僵尸设备请求,服务器不能及时响应全部请求,造成请求堆积,进而雪崩效应,无法响应新的请求
攻击特点:
1-直接访问IP 2-任意api 3-消耗大量带宽(耗尽)

作为前端工程师--防御篇

针对XSS

-永远不要信任用户提交的内容(不要将用户提交的内容直接转化为DOM)
主流框架默认防御XSS

Content Security Policy(CSP)

-由我们定义哪些源(域名)是安全的
-来自安全源的脚本可以执行,否则直接报错
-对eval+inline script说禁止

1659342094600.png

CSRF的防御

服务端1659342137905.png其他判断请求来自于合法来源的方式
先有页面后又请求
if(请求来自于合法页面)
then(服务器接收过页面请求)
then(服务器可以标识)

避免用户信息被携带(从根源上解决CSRF)

1659342339015.png

DDoS

1659342382968.png

HTTP---完整性

1659342440593.png