web开发安全 | 青训营笔记

105 阅读3分钟

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

本堂课课程大纲

  1. Cross-Site Scripting(XSS)
  2. Cross-site request forgery(CSRF)
  3. Injection
  4. Denial of Service(DoS)
  5. Distributed DoS(DDoS)
  6. 中间人攻击
  7. XSS 的防御
  8. 防御 CSRF 的正确姿势
  9. 防御 DoS
  10. 防御 Injection
  11. 防御中间人

攻击篇

Cross-Site Scripting(XSS)

跨站脚本攻击(Cross-site scripting,XSS)是一种安全漏洞,攻击者可以利用这种漏洞在网站上注入恶意的客户端代码。若受害者运行这些恶意代码,攻击者就可以突破网站的访问限制并冒充受害者。

危害:用户隐私泄露、用户机器被用做挖矿

XSS主要利用了:盲目信任用户的提交内容 + 把用户提交的字符串转化为了DOM image.png XSS的一些特点

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

XSS demo

image.png

image.png

XSS ​分类

  1. Stored XSS

    • 恶意脚本被存在数据库中
    • 访问页面-->读数据——被攻击
    • 危害最大,对全部用户可见
  2. Reflected XSS

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

image.png

  1. DOM-based XSS

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

image.png

image.png 4. Mutation-based XSS

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

Cross-site request forgery(CSRF)

跨站请求伪造(CSRF)是一种冒充受信任用户,向服务器发送非预期请求的攻击方式。

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

CSRF demo!

image.png 常见的是GET请求:

image.png

Injection

  1. SQL Injection

image.png 2. Injection不止于SQL

  • CLI(命令行)

  • OS command(系统命令)

  • Server- Side Request Forgery(SSRF),服务端伪造请求

    • 严格而言,SSRF不是injection, 但是原理类似

Denial of Service(DoS)

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

基于正则

正则表达式——贪婪模式:

重复匹配时「?」vs 「no ?」:满足“一个“即可vs尽量多

image.png

Distributed DoS(DDoS)

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

中间人

防御篇

XSS 的防御

  • 永远不信任用户的提交内容
  • 不要将用户提交内容直接转换成DOM
image.png

现成工具:

image.png

⚠⚠[用户需求]不讲武德,必须动态生成DOM

防御 CSRF 的正确姿势

防御 DoS

防御 Injection

防御中间人

课后个人总结

参考

Cross-site scripting(跨站脚本攻击) - 术语表 | MDN

CSRF - 术语表 | MDN