二:前端青训营WEB安全课程总结
这是我参与「第四届青训营 」笔记创作活动的的第三天
[TOC]
攻击角度看web安全
XSS
Cross-Site Scripting(XSS):跨站脚本攻击
可能造成的原因 String -> DOM document.write element.innerHTML = result SSR
特点
难以在UI上感知
窃取用户如cookie/token等信息
绘制UI
攻击类型
-
Stored XSS
恶意脚本存储在数据库中 访问页面 数据库返回数据渲染 被攻击 危害大 对所有的用户可见 -
Reflected XSS
不涉及数据库 从URL进行攻击 -
DOM-based XSS
不需要服务器参与 攻击的发起和执行在浏览器完成 -
Mutation-based XSS
利用浏览器渲染的特性 对于不同的浏览器会有不同的效果
CSRF
即Cross-site request forgery
在用户不知情的情况下利用用户的权限进行操作
Injection
注入的方式
- SQL Injection
- CLI
- OS command
- Server-Side Request Forgery(SSRF) 服务器端伪造请求 严格意义上,SSRF不是injection 但是原理是相似的
SQL Injection
在SQL参数中进行恶意的注入
运行SQL code
进行非法操作
DoS
通过某种方式(构造特定请求) 导致服务器资源被显著消耗 来不及响应更多请求,导致请求挤压,进而雪崩效应
ReDoS
基于正则表达式的DoS攻击
利用正则表达式回溯
会导致响应事件大大增长,接口的吞吐量降低
DDOS
短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。
攻击特点
直接访问IP
任意API
消耗大量带宽(耗尽)
中间人攻击
在服务器和浏览器之间增加一个中间人,进行双向的交互
攻击发生的原因
明文传输
信息篡改不可知
对方身份未验证
防御角度看web安全
XSS
永远不信任用户的提交内容 不要将用户提交内容直接转换成D0M
防御工具
在主流的前端框架默认防御XSS攻击
Node:DOMPurify
SOP(同源策略)
双方的协议,域名和端口号必须相同
CSP
哪些源(域名)被认为是安全的
来自安全源的脚本可以执行,否则直接抛错
对eval+inline script直接拒绝
CSRF的防御
可以利用token防御
服务器向浏览器发送token
在服务器要求浏览器请求携带token
验证用户的token发送数据
HTTPS
在传输的时候传输加密信息和加密信息的hash值
如果两者相同,可以确保信息没有被篡改