目录
- 一、安全性测试
- 二、前端安全性测试
- 三、跨站脚本(XSS)攻击
- 1. 介绍
- 2. 三大类型
- 反射型 XSS(Reflected XSS)
- 存储型 XSS(Stored XSS)
- DOM 型 XSS(DOM-based XSS)
- 3. xss 盲打
- 4. xss 水坑攻击:XSS Watering Hole Attack
- 5. 防范措施
- 四、跨站请求伪造(CSRF)
- 1. 介绍
- 防范措施
- 五、身份认证机制现状
一、安全性测试
安全性测试,指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。
比如对于应用程序,安全测试的主要目的是:查找软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力。
常规测试方法:
- 基于风险的安全测试:信息搜集->威胁建模->可用性分析
- 白盒测试(找出潜在安全性缺陷的最有效的方法):内部攻击,测试人员可以访问源代码、设计文档,可以进行威胁建模或逐行代码检查
- 黑盒测试:以局外人的身份对系统进行攻击,使用工具检查系统的攻击面,并探查系统的内部信息
- 灰盒测试:组合使用白盒测和黑盒测试。程序开发中的调试运行是典型的灰盒测试方法
二、前端安全性测试
前端项目的安全性测试需要关注以下几个方面:
-
跨站脚本(XSS)攻击防范:确保输入验证和输出编码以防止恶意用户注入脚本。
-
跨站请求伪造(CSRF)保护:使用随机生成的令牌验证请求的来源,以防止未经授权的请求。
-
内容安全策略(CSP):配置浏览器只加载信任的资源,防止恶意脚本的执行。
-
跨域资源共享(CORS)设置:限制跨域请求,确保仅受信任的域可以访问资源。
-
敏感数据保护:在传输和存储敏感数据时使用加密,避免敏感信息泄露。
-
认证和授权:实现安全的用户身份验证和授权机制,确保用户只能访问其有权限的资源。
-
安全的第三方库和依赖管理:定期更新和审查使用的第三方库,以确保不受已知漏洞的影响。
-
安全的前端框架和组件:选择安全可靠的前端框架和组件,避免使用存在漏洞或不安全的工具。
通过这些方面的测试和实施安全措施,可以提高前端项目的安全性,保护用户和数据免受恶意攻击。
三、跨站脚本(XSS)攻击
1. 介绍
XSS,Cross Site Scripting,跨站脚本攻击。
XSS 攻击通常指利用网页开发留下的漏洞,将恶意代码注入网页中,使用户加载并执行攻击者的程序。
具体来说,当动态页面中插入的内容含有特殊字符(如 < )时,用户浏览器会将其误认为是插入了 HTML 标签,尤其当引入了一段 JavaScript 脚本 跳转
2. 三大类型
反射型 XSS(Reflected XSS)
在反射型 XSS 攻击中,恶意脚本通过攻击者用户在网站提供的输入功能注入到网站的响应中,然后从响应中反射回其他用户的浏览器,最终被执行。这种攻击下恶意脚本通过 URL 参数或其他输入途径传递给应用程序。
攻击者通常会诱使用户点击一个包含恶意脚本的链接。这个链接可能是通过电子邮件、社交媒体消息、钓鱼网站或其他方式传播的。一旦用户点击了这个链接,其中包含的恶意脚本就会被发送到目标网站的服务器,并被反射到返回给用户的页面中,然后在用户的浏览器中执行。
举个例子,假设攻击者通过电子邮件或社交媒体消息发送了一条诱人的信息给用户,内容可能是:
"您的账户出现异常登录尝试,请立即点击此链接查看详情并修改密码:http://www.example.com/login?username=attacker&password="
用户收到这条信息后,可能会因为担心账户安全而被吸引点击链接。当用户点击链接时,浏览器会向目标网站发送一个带有恶意脚本的请求,其中包含在 URL 参数中的 JavaScript 代码。
目标网站可能会验证用户的登录信息,然后将恶意脚本反射到返回给用户的页面中。用户的浏览器会执行这个恶意脚本,导致弹出一个对话框,显示 “XSS Attack!”。
存储型 XSS(Stored XSS)
在存储型 XSS 攻击中,恶意脚本被用户无意中将其存储在网站的数据库或文件系统中,然后在其他用户访问页面时请求从存储位置检索到包含这些恶意脚本的数据,并在浏览器被执行。这种攻击通常需要攻击者能够向网站提交恶意内容,比如在评论框或表单中注入恶意脚本。
举个例子,假设一个网站有一个留言板功能,允许用户发布评论。攻击者利用这个功能,发布了一个包含恶意脚本的评论,比如:
该评论被存储在网站的数据库中。当其他用户加载包含该评论的页面时,恶意脚本将从数据库中检索并在其浏览器中执行,导致弹出一个对话框,显示 “XSS Attack!”。
DOM 型 XSS(DOM-based XSS)
在 DOM 型 XSS 攻击中,恶意脚本通过修改页面的 DOM 结构来执行,而不是通过服务器返回的响应或存储在数据库中的数据。这种攻击通常涉及恶意脚本被存储在 URL 中,并由客户端的 JavaScript 动态解析执行的攻击形式。
举个例子,假设一个网站有一个搜索功能,会通过 JavaScript 获取 URL 参数进行自动填充搜索,并将其动态插入到页面中的某个元素中。攻击者可以构造一个恶意 URL,比如:
http://www.example.com/search?q=
当用户访问这个 URL 时,页面中的 JavaScript 将获取并解析 URL 中的参数,并将其插入到页面中的某个元素内。由于参数中包含恶意脚本,因此该脚本将被动态执行,导致弹出一个对话框,显示 “XSS Attack!”。
3. xss 盲打
简单来说,盲打就是在一切可能的地方(留言区、feedback等)尽可能多的提交 xss 攻击语句,然后看哪一条会被管理员执行,就能获取管理员的 cooike。比如在输入框输入提前准备的 xss 代码,通常是使用
Top -