[ Web 开发安全 | 青训营笔记 ]

187 阅读2分钟

这是我参与「第五届青训营 」伴学笔记创作活动的第 14 天

Web 安全一窥

安全问题很“危险”,会危害:

  • 用户隐私
  • 公司利益
  • 程序员工作

两个角度看 Web 安全

1. 假如你是一个 hacker ———— 攻击

Cross-Site Scriptng (XSS)

跨站脚本(Cross-site scripting,简称为:CSS, 但这会与层叠样式表(Cascading Style Sheets,CSS)的缩写混淆。因此,跨站脚本攻击缩写为XSS)是一种网站应用程序的安全漏洞攻击。

image.png XSS 主要利用了

  • 盲目信任用户提交的内容
  • 直接把用户提交的字符串 string 直接转换成 dom 元素,例如document.write element.innerHTML = anyString SSR(user_data) 都可能造成 XSS 攻击。

XSS 的特点

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

存储型XSS攻击(Stored XSS)

  • 恶意脚本被存在数据库中
  • 访问页面 -> 读数据 ,因此被攻击
  • 危害最大,对所有用户可见

反射型XSS攻击(Reflected XSS)

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

image.png image.png

Dom型XSS攻击(Dom-based XSS)

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

image.png

image.png 反射型XSS攻击(Reflected XSS)vs Dom型XSS攻击(Dom-based XSS) 注入脚本的地方不同 image.png image.png Mutation-based XSS

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

image.png image.png

Cross-site request forgery (CSRF)

  • 用户不知情的情况下
  • 利用用户权限(cookie)
  • 构造指定 HTTP 请求,窃取或修改用户敏感信息 image.png

image.png

image.png

Injection SQL Injection HTTP请求,SQL恶意注入 ↓ 请求到达服务器server,从HTTP中参数注入到SQL中,然后运行SQL code ↓ 导致攻击者可以获取其他数据,或者是修改数据、删除数据等等。 其他 Injection

  • CLI
  • OS command
  • Server-site request forgery (SSRF),服务端伪造请求。严格来说,SSRF 不是 injection,但是原理类似。

image.png

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

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