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

50 阅读4分钟

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

Web安全作为网络中非常重要的一个组成部分,需要我们去着重了解。

今天的课程围绕前端开发中网络编程的安全性展开,分为两方面:

一方面从Hacker的角度讲解如何对网站进行攻击,另一方面从开发工程师的角度需要考虑如何防护。

一、Web安全

web安全职责:保护服务器及其数据的安全、保护服务器和用户之间传递的信息的安全、保护web应用客户端及其环境安全。

Web安全主要有如下几大分类

  • XSS
  • CSRF(跨站请求伪造)
  • SQL注入
  • 命令行注入
  • DDos注入
  • 流量劫持

我们首先来说说这个XSS:

1.XSS是什么

**xss** 是指攻击者利用开发者留下的漏洞(比如:盲目信任用户提交的内容)进行恶意代码的注入,从而影响到用户,使用户加载并执行攻击者恶意制造的网页程序

2.产生漏洞的两个条件:

  • 盲目信任用户的提交内容。
  • 把用户提交的内容转换为DOM并解析。

3.XSS的特点

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

4.XSS的类型

  • 存储型(持久型)XSS
  • 反射型(非持久型)XSS
  • DOM型XSS
  • 通用型XSS
  • 突变型XSS

4.1 存储型XSS

一般存在与form提交表单之中,如留言,提交文本。攻击者利用XSS漏洞,将脚本内容经过正常功能提交进入数据库永久保存,当前端获得后端从数据库中读出的注入代码时,将其渲染执行

存储型XSS特点:

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

存储型XSS攻击流程:

  1. 恶意脚本先会被攻击者存到数据库中
  2. 正常用户访问了正常的目标服务器,并查看了存在在恶意脚本的页面
  3. 目标服务器就会把XSS和正常的页面同时返回到用户的浏览器中
  4. 然后XSS代码被用户的浏览器解析,向攻击者搭建的恶意服务器提交请求
  5. 最后攻击者从恶意服务器中获取到用户提交的信息

危害很大,攻击范围很广

4.2 反射型XSS

反射型XSS原理:攻击者通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行,从而达到攻击目的(获取用户信息,侵犯隐私)


反射型XSS特点:

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

反射型XSS攻击流程:

  1. 攻击者发送带有XSS恶意链接
  2. 用户点击了恶意链接,访问了正常的目标服务器。
  3. 网站就会把XSS和正常的页面同时返回到用户的浏览器中
  4. 然后XSS代码被用户的浏览器解析,向攻击者搭建的恶意服务器提交请求
  5. 最后攻击者从恶意服务器中获取到用户提交的信息

4.3、DOM型

DOM型XSS原理:通过修改页面的DOM节点形成的XSS,步骤和反射型很类似,但是构造的URL参数不用发送到服务器端,可以达躲避服务端的检测效果。大部分浏览器都专门针对XSS进行转义处理,但也有很多方式可以绕过转义规则,比如web页面字符集不固定,用户输入非字符集字符,有时会绕过转义过滤规则。

DOM型XSS特点:

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

image.png

总结

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