Web开发的安全之旅 | 青训营笔记

65 阅读4分钟

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

老师上课讲了几种常见的案例,并且讲解了如何做防御,本文为笔记与ppt,具体要结合课上的内容和下面几篇掘金上的web安全文章:

  1. web 跨域请求安全问题浅谈
  2. 你需要知道的web安全

一.攻击篇

1.xss

概念

跨站脚本攻击(Cross-site scripting,通常简称为XSS)发生在客户端,跨站脚本攻击是指通过存在安全漏洞的Web网站注册用户的浏览器内运行非法的HTML标签或JavaScript进行的一种攻击

原理

XSS 的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的

特点

-通常难以从UI 上感知(暗地执行脚本)

-窃取用户信息(cookie/token)
-绘制UI(例如弹窗),诱骗用户点击/填写表单

案例

类型

1) 非持久型(反射型)

原理: 即反射型跨站脚本漏洞,是目前最普遍的跨站类型。跨站代码一般存在于链接中,请求这样的链接时,跨站代码经过服务端反射回来,这类跨站的代码不存储到服务端(比如数据库中)。

特点:

  • 即时性,不经过服务器存储,直接通过 HTTP 的 GET 和 POST 请求就能完成一次攻击,拿到用户隐私数据。
  • 攻击者需要诱骗点击,必须要通过用户点击链接才能发起
  • 反馈率低,所以较难发现和响应修复
  • 盗取用户敏感保密信息

2)持久型(存储型):

概念: 持久型 XSS 漏洞,一般存在于 Form 表单提交等交互功能,比如文章留言、提交文本信息等,黑客利用 XSS 漏洞,将内容经正常功能提交进入数据库持久保存,当前端页面获得后端从数据库中读出的注入代码时,恰好将其渲染执行。

漏洞:

  • POST 请求提交表单后端没做转义直接入库。
  • 后端从数据库中取出数据没做转义直接输出给前端。
  • 前端拿到后端数据没做转义直接渲染成 DOM。

特点:

  • 持久性,植入在数据库中
  • 盗取用户敏感私密信息
  • 危害面广

3)DOM(DOM XSS):

概念: 是一种发生在客户端DOM(Document Object Model文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。

原理:

  1. 攻击者构造出特殊数据,其中包含恶意代码。
  2. 用户浏览器执行了恶意代码。
  3. 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。

2.sql注入

\

3.dos与ddos

\

\

4.csrf

概念: CSRF 全称是跨站请求伪造( Cross Site Request Forgery)

漏洞:

  • 用户已经登录了站点 A,并在本地记录了cookie
  • 在用户没有登出站点 A 的情况下(也就是 cookie生效的情况下),访问了恶意攻击者提供的引诱危险站点 B (B 站点要求访问站点A)。
  • 站点 A 没有做任何 CSRF 防御

防御:

  • Get 请求不对数据进行修改
  • 不让第三方网站访问到用户 Cookie
  • 阻止第三方网站请求接口
  • 请求时附带验证信息,比如验证码或者 Token
  • 用户登陆时,设置一个CSRF的随机token,同时后续都在请求后面带上这个token
  • 生成表单的同时,推送token值。表单提交,判断token是否一致,如果不一致或没有这个值,判断为CSRF攻击,并记录日志 ,如一致就放行,并重新生成下一个新的token
  • 重要操作增加二次图片验证码或滑动验证码等
  • 致命操作使用二次密码验证或人脸识别等
  • Referer
  • SameSite cookie Samesite=Strict 被称为是严格模式,表明这个Cookie在任何情况都不可能作为第三方的 Cookie

5.中间人攻击

二.防御篇

1.xss

2.插播:sop同源策略

协议、域名、端口号

3.csp

4.csrf的防御

\

4.crsf

5.sql

6.dos

7.ddos

8.中间人

9.https

10.数字签名

三.总结

安全问题很关键,具体还是要学习更多的安全相关知识