这是我参与「第四届青训营 」笔记创作活动的第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攻击流程:
- 恶意脚本先会被攻击者存到数据库中
- 正常用户访问了正常的目标服务器,并查看了存在在恶意脚本的页面
- 目标服务器就会把XSS和正常的页面同时返回到用户的浏览器中
- 然后XSS代码被用户的浏览器解析,向攻击者搭建的恶意服务器提交请求
- 最后攻击者从恶意服务器中获取到用户提交的信息
危害很大,攻击范围很广
4.2 反射型XSS
反射型XSS原理:攻击者通过给别人发送带有恶意脚本代码参数的URL,当URL地址被打开时,特有的恶意代码参数被HTML解析、执行,从而达到攻击目的(获取用户信息,侵犯隐私)
反射型XSS特点:
- 不涉及数据库
- 从URL上攻击
反射型XSS攻击流程:
- 攻击者发送带有XSS恶意链接
- 用户点击了恶意链接,访问了正常的目标服务器。
- 网站就会把XSS和正常的页面同时返回到用户的浏览器中
- 然后XSS代码被用户的浏览器解析,向攻击者搭建的恶意服务器提交请求
- 最后攻击者从恶意服务器中获取到用户提交的信息
4.3、DOM型
DOM型XSS原理:通过修改页面的DOM节点形成的XSS,步骤和反射型很类似,但是构造的URL参数不用发送到服务器端,可以达躲避服务端的检测效果。大部分浏览器都专门针对XSS进行转义处理,但也有很多方式可以绕过转义规则,比如web页面字符集不固定,用户输入非字符集字符,有时会绕过转义过滤规则。
DOM型XSS特点:
- 不需要服务器的参与
- 恶意攻击的发起、执行,全在浏览器完成
总结
XSS 的原理是恶意攻击者往 Web 页面里插入恶意可执行网页脚本代码,当用户浏览该页之时,嵌入其中 Web 里面的脚本代码会被执行,从而可以达到攻击者盗取用户信息或其他侵犯用户安全隐私的目的。