Web安全开发学习 | 青训营笔记

115 阅读2分钟

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

首先Web安全很常见,对于我们开发人员来说,在平时开发中需要特别注意

攻击

XSS

跨站脚本攻击(Cross Site Scripting) 恶意脚本注入

  • 盲目信任用户提交内容
    • string -> dom转换
    • inner html
    • ssr

特点:

  • 很难从UI上感知
  • 窃取用户信息(cookie、token
  • 绘制弹窗等
// 需要对字符串内容进行过滤
ctx.body = `<div>${content}</div>`

存储型XSS

  • 恶意脚本被存在数据库中,用户在访问页面时读取数据时被攻击
  • 全部用户可见,危害大

反射型XSS

  • 通过URL参数进行攻击。恶意代码在url中取出,拼接在HTML中返回给浏览器,用户就会执行恶意代码。

基于DOM XSS攻击

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

基于浏览器区别XSS攻击

<noscript><p title="</noscript><img src=x onerror=alert(1)>">

<noscript><p title="</noscript>
<img src=x onerror=alert(1)>
"">"

CSRF

跨站伪造请求:

诱导用户跳转到新的页面,利用 服务器的验证漏洞 和 用户之前的登入状态,来模拟用户进行操作。

  • 在用户不知情情况下
  • 利用用户权限如cookie
  • 构造指定HTTP请求,进而窃取修改用户信息

如利用href,src

注入

  • SQL注入
  • CLi命令行注入
  • OS comand
  • SSRF

如以字符串形式拼接SQL语句导致被注入

DOS

构造特定请求消耗服务器资源,导致请求挤压,服务雪崩

  • 利用正则表达式的贪婪模式/a+/

传输层传输:中间人攻击

  • 信息篡改

防御

XSS

永远不要相信用户特定的任何内容,及将其转化为DOM

场景:

  • 动态生成DOM
  • 上传SVG检测,SVG``可插入script`
  • 自定义跳转(可传递js代码)过滤
  • 自定义样式
// 能够制定用户
input[type=radio].income-get10k:checked {
    background: url(https://xxx);;
}

主流框架自带,也可使用现成工具过滤

  • google-closure-library
  • Node:DOMPurity

同源政策 内容安全政策:定义安全源

响应头部:

  • Content-Security-Policy: script-src 'self' https://domain.com
  • Meta标签

CSRF

  • token
    • token和具体用户绑定
    • token有效期限
  • iframe
    • X-Frame-Options: DENY/SAMEORIGIN

注入

  • 最小权限原则
  • 建立白名单过滤
  • 限制url参数类型

DOS

  • CR
  • 代码扫描
  • 禁止用户提供正则

其它

  • 流量治理
  • 快速扩容
  • HTTPS TSL
  • 数字签名
  • HSTS:HTTP升级HTTPS
  • SRI:静态资源篡改对比hash
  • 依赖安全漏洞

总结

本次课程学习了Web相关的知识,老师也通过伪代码的形式讲解了出现安全的情况,整体上简洁明了。安全无小事,以后在开发中需要特别注意安全带来的问题