fe-notes icon indicating copy to clipboard operation
fe-notes copied to clipboard

前端网络安全

Open Inchill opened this issue 3 years ago • 0 comments

XSS 跨站脚本攻击

原理

XSS 是常见的 Web 攻击技术之一.所谓的跨站脚本攻击指得是:恶意攻击者往 Web 页面里注入恶意 Script 代码,用户浏览这些网页时,就会执行其中的恶意代码,可对用户进行盗取 cookie 信息、会话劫持等各种攻击。

危害

1.盗取各类用户帐号,如机器登录帐号、用户网银帐号、各类管理员帐号 2.控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力 3. 盗窃企业重要的具有商业价值的资料 4.非法转账 5.强制发送电子邮件 6.网站挂马 7.控制受害者机器向其它网站发起攻击

前端如何处理

  • 过滤用户的输入信息,禁止用户在输入的过程中输入 "<", ">", "引号", "$", "_"
  • 核心的用户身份标示或 token 保存在 Cookie 中,Cookie 中一定要加 “HTTPOnly” 在结尾,保证只有在 html 操作时才能将 cookie 中的内容发送出去,在 JS 中无法获得用户的 Cookie 信息
  • 启用 CSP(Content Security Policy) 策略。在服务端使用 HTTP的 Content-Security-Policy 头部来指定策略,或者在前端设置 meta 标签。
Content-Security-Policy: default-src 'self'
<meta http-equiv="Content-Security-Policy" content="form-action 'self';">

CSRF 跨站请求伪造

原理

CSRF(Cross-site request forgery)跨站请求伪造,也被称为 “One Click Attack” 或者 Session Riding,通常缩写为 CSRF 或者 XSRF,是一种对网站的恶意利用。尽管听起来像跨站脚本(XSS),但它与 XSS 非常不同,XSS 利用站点内的信任用户,而 CSRF 则通过伪装来自受信任用户的请求来利用受信任的网站。与 XSS 攻击相比,CSRF 攻击往往不大流行(因此对其进行防范的资源也相当稀少)和难以防范,所以被认为比 XSS 更具危险性。

前端如何处理

  • 减少在 cookie 中存储客户核心内容比如用户的 token、ID、access_token 等
  • GET 请求不对数据进行修改
  • 不让第三方网站访问到 Cookie,设置 Samesite Cookie 属性
  • 阻止第三方网站请求接口
  • 添加验证码(体验不好)
  • 判断请求的来源:检测Referer(并不安全,Referer可以被更改)
  • 使用Token(主流)

点击劫持

原理

点击劫持是指在一个Web页面中隐藏了一个透明的iframe,用外层假页面诱导用户点击,实际上是在隐藏的frame上触发了点击事件进行一些用户不知情的操作。

前端如何处理

  • frame busting
if ( top.location != window.location ){
    top.location = window.location
}
  • X-Frame-Options

X-FRAME-OPTIONS是微软提出的一个http头,专门用来防御利用iframe嵌套的点击劫持攻击。并且在IE8、Firefox3.6、Chrome4以上的版本均能很好的支持。

DDOS 攻击

原理

DDOS 攻击,它在短时间内发起大量请求,耗尽服务器的资源,无法响应正常的访问,造成网站实质下线。

前端如何处理

  • 防范 DDOS 的第一步,就是你要有一个备份网站,或者最低限度有一个临时主页。生产服务器万一下线了,可以立刻切换到备份网站,不至于毫无办法。

后端如何处理

  • HTTP 请求的拦截,恶意请求都是从某个 IP 段发出的,那么把这个 IP 段封掉就行了。或者,它们的 User Agent 字段有特征(包含某个特定的词语),那就把带有这个词语的请求拦截。
  • 带宽扩容,或者使用 CDN

参考资料

Inchill avatar Aug 12 '22 01:08 Inchill