网络安全|青训营课程

85 阅读2分钟

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

攻击者角度

XSS 跨站脚本攻击

含义

攻击者注入JS脚本,访问页面时,代码被执行

导致原因

盲目信任用户提交的内容,导致普通String转化成DOM

后果及难点

  • 无法从UI感知
  • 窃取用户信息
  • 诈骗信息弹窗
  • 导致用户隐私泄露,并使用其电脑挖矿

类别

  1. 存储型CSS Stored XSS: 恶意脚本被存储至数据库中,危害最大,涉及全部用户
  2. 反射型CSS Reflected CSS: 从URL进行攻击
  3. 基于DOM的XSS攻击 DOM-based CSS: 不需要服务器参与,直接在浏览器端完成
  4. 基于Mutation的XSS攻击: 按浏览器进行区别攻击的方式

CSRF 跨站伪造请求

含义

其他域名伪造Cookie访问服务器端接口,且请求执行成功

过程及其难点

  • 用户全程不需要访问目标网站

方法

  1. GET方法
  2. 表单
  3. injection
  • SQL
  • CLI
  • OS Command
  • Server-Side Resquest Forgery(SSRF)

类型

  1. 流量转发
  2. 删库跑路
  3. SSRF暴露内网信息
  4. DDOS: Ex. 洪水攻击: 三次握手没完成,连接无法被释放
  5. ReDoS: 通过正则表达式的DoS

基于传输层的攻击方式

中间人攻击

含义

可以基于浏览器,也可以基于路由器等,服务器和用户之间难以感知

防御角度

XSS 跨站脚本攻击

工具

常规情况

  • Google closure library
  • 主流框架默认防御 特殊情况
  • String进行转义
  • 对上传SVG进行扫描
  • 禁止自定义跳转链接,或者做过滤
  • 禁止自定义样式

同源策略与CSP

协议,域名和端口号都相等即为同源,CSP为内容安全策略,可以定义哪些源为安全的 服务器端例子:

Content-Security-Policy: script-src 'self'
Content-Security-Policy: script-src 'self' https://domain.com

CSRF 跨站伪造请求

方法

限制伪造请求的来源,

  1. 对origin+Referrer进行校验
  2. 先有页面,后有请求
  3. 验证Token:用户绑定+前向保密
  4. CSRF的特殊情况: iframe攻击
    特征是非跨域请求,窃取用户点击对象,解决方法为: X-Frame-Options设置,必须同源页面才能加载iframe

注意

  • Get和Update的API要分开,避免偷懒行为
  • SameSite Cookie,限制domain属性,和当前页面域名是否匹配;依赖第三方cookie的可以把Set-Cookie变为None,以确保安全
  • CORS和SameSite的区别:
  • SameSite 是Cookie发送,Domain vs. 页面域名
  • CORS是资源读写,资源域名 vs 页面域名,白名单策略