#前言
随着前端的日益发展,前端安全在互联网的位置越来越重要。在前端安全的话题中,最重要的两点是前端攻击与前端加密。
1. 前端安全攻击
要了解前端安全防范,首先要了解常见的几种前端安全攻击手段以及预防措施
#跨站脚本攻击(XSS)
原理:
XSS 攻击的主要原因之一是在将用户生成的输入呈现在页面上。例如,攻击者可能能够使用 JavaScript 注入恶意代码,并且该代码可以在你的应用呈现 DOM 时执行。此恶意代码最终可能会访问并窃取用户token、cookie以及浏览器中存储的其他敏感信息。
解决:
- 使用合适的编码和转义方式来处理用户输入数据,例如对特殊字符进行转义或使用安全的HTML渲染库。
- 确保验证和清理允许用户在必要时插入数据和编码输出的表单、输入字段。
- 实施内容安全策略 (CSP) 以限制加载的资源和脚本。
- 使用 Vue 和 React 等框架,它们具有针对跨站点脚本攻击的内置预防机制。
#跨站请求伪造(CSRF)
原理:
CSRF是一种攻击者利用用户已经登录的身份进行恶意操作的方式。
解决:
- 在每个表单或请求中添加一个随机生成的token,并验证该token的合法性。
- 利用后端框架的内置 CSRF 支持来防止此类攻击。
#SQL注入
原理:
攻击操纵数据库查询以获得未经授权的数据库访问,以执行恶意活动,例如损坏数据库或窃取敏感数据。SQL 注入让攻击者可以从前端执行 SQL 查询。这可能会导致破坏性操作,从而获取你数据库中的信息。
解决:
- 需要确保前端输入字段经过正确验证和处理。防止用户在输入的字段中插入恶意代码。
- 验证前端后,清理后端收到的数据也很重要。后端不要信任前端输入的任何数据,因为任何人都可以获取你的 API 端点并开始发送恶意输入。因此,后端也需要进行验证。此外,利用Burp Scanner 、 sqlmap、jSQL Injection和Invicti等工具来检测应用程序中潜在的 SQL 攻击和相关漏洞。
#中间人攻击(MitM)
原理:
攻击迫使攻击者拦截和操纵在两方之间传输的信息。当攻击者利用不安全的通信通道(通常通过公共 WiFi)时,就会发生这些攻击。这种攻击的受害者不会觉得自己受到了攻击,因为他们认为自己正在与服务器进行完全正常且安全的对话,而他们共享的信息在此过程中遭到监视或更改。
解决:
- 使用安全的互联网连接并注销不再使用的应用程序。
- 不要连接到你不知道的网络。例如,不要连接到咖啡馆提供的免费 WiFi。
- 使用 HTTPS 和 TLS 等安全通信协议对传输中的所有数据进行加密。
#点击劫持(UI 纠正攻击)
原理:
它将隐藏元素覆盖在网站上合法可点击组件的顶部。在这种情况下,用户实际上点击了一个无意的元素,这可能会在未经他们同意的情况下触发攻击者的期望操作(比如转账)等意外操作。
解决:
为了减轻点击劫持攻击的潜在风险,可以使用的一种机制是使用X-Frame-Options标头,它可以确保你的网站不会嵌入到其他网站或 IFrame 中。
#安全配置错误攻击
原理:
应用程序的安全配置错误问题通常是由不正确的设置、默认值和过时的配置引起的,这些问题可能导致攻击者利用的漏洞进行攻击。例如,在某些情况下,启用目录列表可能会泄露敏感信息,密码和密钥不会更新并保留为默认值,并且会暴露错误处理信息。
解决:
- 始终确保更新使用的服务的默认密钥和密码,并定期执行配置审核。
- 定期检查安全设置还可以帮助降低可能存在安全配置错误或过时配置漏洞的风险。
- 对于具有不同凭据的类似配置的生产、开发和测试环境进行自动化构建和部署流程。
#依赖性利用
原理:
前端应用程序由许多第三方库组成,用于使开发人员的工作更加轻松。但开发人员普遍忽视的是,这些库有时可能存在安全漏洞。
解决:
- 这个没有太好的防范方式,只能是使用广泛使用且维护得当的可靠且经过社区测试的库。
- 除此之外,最好可以定期审核、依赖项更新和使用漏洞扫描工具进行检查。
2.加密安全
在处理密码和敏感信息时,前端应该采取安全的加密储存和传输方式。
#消息摘要算法
什么是消息摘要算法:
- 相同的明文数据经过相同的消息摘要算法会得到相同的密文结果值。
- 数据经过消息摘要算法处理,得到的摘要结果值,是无法还原为处理前的数据的。
- 数据摘要算法也被称为哈希(Hash)算法或散列算法。
- 消息摘要算法一般用于签名验签。
有哪些信息摘要算法:
#对称加密算法
什么是对称加密算法:
- 加密和解密使用「相同密钥」的加密算法就是对称加密算法
有哪些对称加密算法:
#非对称加密算法
什么是非对称加密算法:
- 非对称加密算法需要两个密钥:公钥和私钥。公钥与私钥是成对存在的,如果用公钥对数据进行加密,只有用对应的私钥才能解密。反之,私钥加密的信息,只有公钥才能解密。
有哪些非对称加密算法:
#国密算法
什么是国密算法:
- 国密即国家密码局认定的国产密码算法。为了保障商用密码的安全性,国家商用密码管理办公室制定了一系列密码标准。
有哪些国密算法:
除了了解前端攻击与加密算法,我们还应该用以下的主动手段来提高前端安全性...
3. 跨源资源共享(CORS)设置
CORS用于限制跨域请求,防止恶意站点或脚本进行未经授权的操作,前端开发人员可以通过设置合适的CORS响应头部字段来限制跨域请求。
4. 客户端数据储存安全
当需要在客户端储存数据时,如使用localStorage或sessionStorage,需要注意数据的敏感性,敏感数据应加密处理。
5. 输入验证与过滤
前端应对用户输入数据进行有效的验证和过滤,防止用户输入恶意数据或非法字段。例如通过使用正则表达式验证用户输入的邮箱地址、手机号等。
6. SSL/TLS加密
使用HTTPS协议对前端和后端之间的通信进行加密,保证数据在传输过程中的安全性。
7. 安全漏洞扫描和代码审查
定期进行安全漏洞扫描和代码审查,以发现和修复潜在的安全漏洞和风险。