这是我参与「第四届青训营 」笔记创作活动的的第8天
老师上课讲了几种常见的案例,并且讲解了如何做防御,本文为笔记与ppt,具体要结合课上的内容和下面几篇掘金上的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文档对象模型)中的跨站漏洞,很大原因是因为客户端脚本处理逻辑导致的安全问题。
原理:
- 攻击者构造出特殊数据,其中包含恶意代码。
- 用户浏览器执行了恶意代码。
- 恶意代码窃取用户数据并发送到攻击者的网站,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作。
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.数字签名
三.总结
安全问题很关键,具体还是要学习更多的安全相关知识