菜鸟笔记之Web开发安全

160 阅读3分钟

Web开发安全

攻击篇

Cross- Site Scripting(XSS)

xss主要利用了

  1. 盲目信任用户的提交内容
  2. string-> DOM
  • document.write
  • element.innerHTML = anyString;
  • SSRCuser_data〕 //伪代码

XSS 的一些特点

  • 通常难以从 U 上感知(暗地执行脚本)
  • 窃取用户信息 (cookie/token)
  • 绘制 UI (例如弹窗),诱骗用户点击/填写表单

存储型XSS

Stored XSS

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

反射型XSS

reflected XSS

  • 不涉及数据库
  • 从 URL上攻击

基于DOM的XSS攻击

DOM-based XSS

  • 不需要服务器的参与
  • 恶意攻击的发起、执行,全在浏览器完成

根据渲染机制进行攻击的XSS

Mutation XSS

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

跨域攻击

Cross-site request forgery(CSRF)

在用户不知情的前提下 -利用用户权限 (cookie)

  • 构造指定 HTTP 请求,窃取或修改用户敏感信息

注入攻击

SQL linjection

1、请求

SQL参数(恶意注入)

2、server

参数->SQL

运行SQL code

3、

获取其他数据、修改数据、删除数据

lnjection 不止于 SQL

•CLI • OS command •Server- Side Request Forgery(SSRF),服务端伪造请求 • 严格而言,SSRF 不是injection,但是原理类似

DoS攻击

插播:正则表达式-贪婪模式

重复匹配时「?」 vs 「no了:满足“一个“即可 vs 尽量多

ReDos:基于正则表达式的 Dos

贪婪:n次不行?n-1次再试试?--回溯

响应时间变长,接口吞吐量下降

Distributed DoS(DDoS)

短时间内,来自大量僵尸设备的请求流量,服务器不能及时完成全部请求,导致请求堆积,进而雪崩效应,无法响应新请求。

攻击特点

  • 直接访问IP
  • 任意 API — 消耗大量带宽(耗尽)

传输层攻击

中间人攻击

特点: ①明文传输 ②信息篡改不可知 ③对方身份末验证

防御篇

XSS

  • 永远不信任用户的提交内容
  • 不要将用户提交内容直接转换成 DOM

插播:Same-origin Policy

  • 协议
  • 域名
  • 端口

同源可行,跨域不可行

现成工具

前端 — 主流框架默认防御 XSS

  • google-closure-library 服务端 (Node)
  • DOMPurify

Content Security Policy(CSP)

CSP

  • 哪些源(域名)被认为是安全的
  • 来自安全源的脚本可以执行,否则直接抛错
  • 对 eval + inline script 说 NO

CSRF 的防御

if 伪造请求 异常来源
then 限制请求来源 一限制伪造请求
- Origin                     ]
- 同源请求中,GET + HEAD 不发送 ] 请求头部
- Referer                    ]

CSRE-token 除了 Origin + Referrer其他判断【请求来自于合法来源】的方式 先有页面,后有请求

if(请求来自合法页面〕

then C服务器接收过页面请求〕

then C服务器可以标识)

DDoS

-流量治理
- 负载均衡   ]
- API 网关   ] 过滤

- CDN         ]
- 快速自动扩容  ] 抗量
- 非核心服务降级 ]

HTTPS 的一些特性

  • 可靠性:加密
  • 完整性:MAC 验证
  • 不可抵赖性:数宇签名

HTTPS一一完整性

传输内容
加密信息 + 加密信息_hash

接收方
ifhash(加密信息〕= 加密信息_hash)
{ok}
else
{not ok}

插播:数字签名

签名执行者

  • privatekey (自己藏好)
  • publickey (公开可见)