跟chatGPT一起复习前端 —— 安全问题

269 阅读7分钟

前言

又到一波面试准备的时刻,整理了一波前端相关要点内容,配合chatGPT完成要点内容的整理输出,有纠正错误和需要补充的小伙伴可以在这里留言,及时更新。

跨站脚本攻击(XSS)

XSS(Cross Site Scripting)跨站脚本攻击,是一种网站应用程序的安全漏洞攻击。 XSS攻击通常指的是通过利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序。

XSS攻击可以分为反射型和存储型两种类型。反射型XSS攻击是指将用户输入的数据反射给浏览器,浏览器解析后执行,而存储型XSS攻击是指将用户输入的数据存储到服务器上,当其他用户访问该页面时,恶意脚本会被执行。

防御XSS攻击的方法有很多种,如过滤特殊字符、使用转义字符、使用HTTPOnly等。

跨站请求伪造(CSRF)

跨站请求伪造(CSRF)是一种网络攻击方式,它可以在用户毫不知情的情况下,以用户的名义伪造请求发送给被攻击站点,从而在未授权的情况下进行权限保护内的操作。

CSRF(即跨站请求伪造)是指利用受害者尚未失效的身份认证信息、(cookie、会话等),诱骗其点击恶意链接或者访问包含攻击代码的页面,在受害人不知情的情况下以受害人的身份向(身份认证信息所对应的)服务器发送请求,从而完成非法操作(转账,改密码等)。

为了防止CSRF攻击,可以采取以下措施:1、在表单中添加token验证;2、在HTTP头中自定义属性并验证;3、使用验证码。

iframe安全问题

iframe是HTML中的一个标签,可以将另一个HTML页面嵌入到当前页面中。但是,iframe也存在一些安全问题,如下所示:

  1. iframe注入
  2. 跨框架脚本攻击
  3. 点击劫持
  4. iframe网络钓鱼

为了防止iframe安全问题,可以采取以下措施:

  1. 在HTTP头中自定义属性并验证;
  2. 使用framekiller2;
  3. 使用CSP(Content Security Policy)。

本地存储数据问题

本地存储数据问题可能包括以下方面:

  1. 如果一个站点容易受到XSS攻击,LocalStorage是不安全的,因为LocalStorage具有许多与cookie相同的特征,包括相同的安全风险。其中之一是对跨站点脚本的易感性,它会窃取cookie,让黑客伪装成具有站点登录会话的用户。
  2. 开发者无法控制本地存储的数据,使用本地存储,没有服务器端存储——没有开发人员可以控制的数据库。由于一些原因,这可能会出现问题,其中之一是开发人员无法在存储代码或信息后对其进行更新。用户需要手动删除文件,这需要首先找到它。
  3. 用户清除其缓存,定期清除浏览器缓存有助于cookie更有效地发挥作用,这通常是人们在解决浏览器问题(如页面加载不正确)时采取的第一步。当使用本地存储来支持站点的功能时,这是一个问题。如果用户清除浏览器缓存,该信息将永久丢失。这使得本地存储作为备用数据库更有用。

第三方依赖的安全性问题

第三方依赖的安全性问题是一个非常重要的问题。使用第三方依赖包可以加快开发速度,但是也会带来一些安全风险。例如,第三方依赖包可能包含漏洞或恶意代码,这可能会导致应用程序受到攻击。为了减少这些风险,开发人员应该尽可能地减少使用第三方依赖包,并选择相对成熟的依赖包。此外,开发人员还应该定期检查依赖包的风险,并及时更新依赖包以修复已知的漏洞

HTTPS加密传输数据安全问题

HTTPS加密传输数据可以防止数据被窃听,但是如果存在第三方劫持请求,篡改报文数据,就会存在安全问题。为了解决这个问题,我们可以使用加签技术。在加签过程中,我们会使用传输内容进行加密的手段,来解决第三者「窃听」的问题。

另外,在使用HTTPS时,网站需要向CA机构申请数字证书,数字证书里含有证书持有者信息、公钥信息等。服务器把证书传输给浏览器,浏览器从证书里获取公钥就行了,证书就如身份证,证明“该公钥对应该网站”。

点击劫持如何进行攻击和防御

点击劫持是一种视觉上的欺骗手段,攻击者通过使用一个透明的iframe,覆盖在一个网页上,然后诱使用户在该页面上进行操作,通过调整iframe页面的位置,可以使得伪造的页面恰好和iframe里受害页面里一些功能重合(按钮),以达到窃取用户信息或者劫持用户操作的目的。

点击劫持可以通过以下方式进行防御:

X-Frame-Options:X-Frame-Options 是一个 HTTP 响应头,它可以让网站管理员控制页面是否可以在 iframe 中显示。如果设置为 DENY,则表示该页面不能在 iframe 中显示;如果设置为 SAMEORIGIN,则表示该页面只能在同源域名下的 iframe 中显示。 JavaScript 防御:JavaScript 防御主要是通过检测当前窗口是否为顶层窗口来判断是否存在点击劫持。

DNS劫持

DNS(域名系统)劫持又叫域名劫持,指攻击者利用其他攻击手段,篡改了某个域名的解析结果,使得指向该域名的IP变成了另一个IP,导致对相应网址的访问被劫持到另一个不可达的或者假冒的网址,从而实现非法窃取用户信息或者破坏正常网络服务的目的。

DNS劫持可以通过以下方式进行防御:

  • 使用 HTTPS 协议:HTTPS 协议可以保证数据传输过程中不被篡改。
  • 使用 DNSSEC:DNSSEC 是一种 DNS 安全扩展协议,它可以保证 DNS 解析结果的真实性和完整性。
  • 修改 hosts 文件:在 hosts 文件中添加需要访问网站的 IP 地址和域名映射关系,这样就不需要通过 DNS 解析来获取 IP 地址了。
  • 使用 VPN:VPN 可以加密数据传输过程,防止数据被篡改。

DDoS攻击

DDoS攻击是指分布式拒绝服务攻击,是一种通过大量合法的请求占用大量网络资源,以达到使网络瘫痪的目的的攻击方式。DDoS攻击的前身是DoS攻击,其含义是拒绝服务攻击,这种攻击行为使网站服务器充斥大量的要求回复的信息,消耗网络带宽或系统资源,导致网络或系统不胜负荷而停止提供正常的网络服务。

DDoS攻击可以分为以下几种方式:

  • 通过使网络过载来干扰甚至阻断正常的网络通讯;
  • 通过向服务器提交大量请求,使服务器超负荷;
  • 阻断某一用户访问特定网站或服务器。

为了防范DDoS攻击,可以采取以下措施:

  • 增加带宽;
  • 增加硬件设备;
  • 配置防火墙;
  • 使用反向代理;
  • 使用CDN等。