WEB安全|青训营笔记

97 阅读3分钟

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

Cross-Site Scripting(XSS)

他的恶意脚本注入进来

发生情况

开发者盲目信任用户提交的内容,直接将输入的字符串就去放到DOM里

  • document.write
  • element.innerHTML = anyString
  • SSR(user_data)//伪代码

特点

  • 通常很难从UI上去感知(因为他是偷偷的将脚本注入进来的)
  • 窃取用户信息(cookie/token)
  • 绘制UI(例如弹窗),诱导用户去点击/填表格等

防御

不要相信用户传上来的东西

类型

stroed xss存储型XSS

特点

  • 而已脚本被存储到数据库里
  • 访问页面,就会读取到数据,就等于是被攻击了
  • 意思就是,无论是谁。只要访问了,就都会攻击,所以范围广,危害大

Reflected xss发射型XSS

特点

  • 不涉及数据库

  • URL上攻击

  • 他的脚本注入是在服务端的时候注入

    类似于/path/?params=<script>alert('123')</script>

DOM-based XSS基于DOMXSS攻击

特点

  • 不需要服务器的参与
  • 恶意攻击的发起+执行,全在浏览器完成
  • 他的脚本注入是在浏览器端完成的

一般也是,我们从url里面获取参数,但是我们没有判断,直接innerHTML这种

DOM型XSS.png

Cross-site request forgery(CSRF)

跨站伪造请求

特点

  • 在用户不知情的情况下进行
  • 利用用户权限(Cookie)
  • 伪造指定HTTP请求,窃取或修改用户敏感信息

防御

必须是同源请求

举例

CSRF-token

sequenceDiagram
	Browser-->>Server:请求页面
    Server-->>Browser: 页面+token
    Browser-->>Server: 请求API+token
    Server-->>Browser: 验证token+数据
    Note over Browser,Server:token必须是当前用户的token,token需要有过期时间

SameSIte cookie

他限制的是cookie的domain,只有相同的,那么才可以访问,他还限制页面的域名

sequenceDiagram
	域名A-->>第一方Cookie:请求是可以完成的
	Note over 域名A,第一方Cookie:第一方cookie,domain是A
	域名A-->>第三方Cookie:不可以完成
	Note over 域名A,第三方Cookie:第三方cookie,domain不是A

csrf.png

injection注入

典型的是SQL Injection

DOS

这是服务器的攻击

定义:

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

REDOS

利用的是正则表达式的贪婪模式

例如:

/^((ab)*)+$/

它可以匹配ab,ababababab

但是无法匹配abababababababa,这会导致他一直发送请求,造成了回溯

防御

避免使用贪婪模式

DDOS

定义

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

特点:

  • 大量的请求
  • 直接去访问API,他不会去拐弯抹角的,他是直接去访问
  • 任意API
  • 消耗大量的带宽

防御:

  • 流量控制
    • 负载均衡(过滤)
    • API网关(过滤)
    • CDN
  • 快速自动扩容
  • 非核心服务降级

中间人攻击

中间人攻击.png

在浏览器和服务器之间,浏览器认为自己在和服务器打交道,服务器认为自己在和浏览器打交代,但他们其实是和一个中间人在交流,中间人可以获取到数据,可以修改数据等

特点

  • 明文传输
  • 信息篡改不可知
  • 对方身份未验证