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

49 阅读2分钟

这是我参与「第四届青训营 」笔记创作活动的的第5天

一、重点内容:

  • Web安全中的攻击手段
  • Web安全中的防御措施

二、详细知识点介绍:

假如你是一个黑客——攻击篇

跨站脚本攻击Cross-Site Scripting XSS

盲目信任用户提交的内容,将字符串转换为DOM

  • document.write
  • element.innerHTML=str
  • SSR(user_data)

特点

  • 难以从UI上感知,暗中执行脚本
  • 窃取用户信息
  • 绘制UI,诱骗用户点击/填写表单

存储型XSS

将脚本存储在数据库中,访问页面时读取数据即被攻击,对全部用户可见,危害最大。

反射型XSS

从服务器到浏览器,不涉及数据库,从URL上发起攻击

基于DOM的XSS

不需要服务器,完全在浏览器中完成恶意攻击的发起和执行

跨站伪造请求 Cross-Site request forgery

  • 用户不知情
  • 利用用户权限cookie
  • 构造指定HTTP请求,窃取或修改用户敏感信息

注入 Injection

sql注入

通过SQL参数恶意注入SQL语句来运行非法SQL获取、修改、删除数据

CLI

OS command

SSRF

Denial of Service DoS

通过某种方式(构造特定请求),导致服务器资源被显著消耗,来不及响应更多请求,导致请求挤压,进而雪崩效应

正则表达式——贪婪模式

?:有一个即可

没有?:匹配多个

ReDoS

Logical DoS

  • 耗时的同步操作
  • 数据库写入
  • SQL join
  • 文件备份
  • 循环执行

DDoS

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

  • 直接访问IP
  • 任意API
  • 消耗大量带宽

中间人攻击

假如你是一个开发者——防御篇

XSS

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

防御XSS工具

Same-origin Policy 同源策略

协议,域名,端口三者必须都相同,才能被称为同源

Content Security Policy CSP

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

先请求页面再请求API

Regex DoS

  • Code Review
  • 代码扫描 + 正则性能测试
  • 不使用用户提供的正则

Logical DoS

  • 分析代码中的性能瓶颈
  • 限流

DDoS

  • 流量治理

    • 负载均衡
    • API 网关
    • CDN
  • 快速自动扩容
  • 非核心服务降级

防御中间人

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

三、课后个人总结:

安全问题是十分常见的,也是十分重要的,我们需要高度关注。随着技术的不断进步,很多的安全问题不断被修复或防御,但也会伴生出新的安全问题,所以我们要保持学习的态度,研究新的安全问题。

\