你在项目中做过哪些安全防范措施?

如果你被面试官问到这个问题,不要急于描述自己遇到的问题以及如何处理的,你得先去理解问题中的潜台词。“做过哪些措施”更深层的意思是“你熟悉哪些攻击方式,知道哪些解决方案当然,不可能把每次做的安全防范措施都一一的说给面试官听, 这样显得没有重点。

「做哪些安全防范」换个思维思考“有哪些攻击方式,那么我们就可以基于攻击方式的分类,来讨论究竟有哪些防范攻击的措施。
从而可以梳理出关于这个问题回答的思路:

CSRF攻击的特点:

  • 通常发生在第三方 站

  • 攻击者不能获取cookie等信息,只是使用

如何防御

  • 验证码:强制用户必须与应用进行交互,才能完成最终请求。此种方式能很好的遏制 CSRF,但是用户体验相对差。

  • 尽量使用 post ,限制 get 使用;上一个例子可见,get 太容易被拿来做 CSRF 攻击,但是 post 也并不是万无一失,攻击者只需要构造一个form就可以。

  • token:token 验证的 CSRF 防御机制是公认最合适的方案。

CSRF 与 XSS 区别

通常来说 CSRF 是由 XSS 实现的,CSRF 时常也被称为 XSRF(CSRF 实现的方式还可以是直接通过命令行发起请求等)。

本质上讲,XSS 是代码注入问题,CSRF 是 HTTP 问题。XSS 是内容没有过滤导致浏览器将攻击者的输入当代码执行。CSRF 则是因为浏览器在发送 HTTP 请求时候自动带上 cookie,而一般 站的 session 都存在 cookie里面。XSS 利用的是用户对指定 站的信任,CSRF 利用的是 站对用户 页浏览器的信任。

点击劫持

点击劫持(click hijacking)也称为 UI 覆盖攻击。它通过一些内容(如游戏)误导被攻击者点击,虽然被攻击者点击的是他所看到的 页,但其实所点击的是另一个置于原 页上面的透明页面。

根据先点击劫持原理示意图,分析典型点击劫持攻击流程:

  • 客户端发送请求到服务端,请求被中间获
  • 服务器向客户端发送公钥
  • 中间获公钥,保留在。然后【伪造的】公钥,发给客户端
  • 客户端收到伪造的公钥后,加密hash值发给服务器
  • 中间得加密hash值,私钥解密获得真秘钥,同时假的加密hash值,发给服务器
  • 服务器钥解密获得假密钥,然后加密数据传输给客户端

如何防御

采用HTTPS通信可以防御中间人攻击, 但是使用HTTPS并不就绝对安全,一方面你要完全关闭HTTP通信,如果没有完全关闭,攻击者可以通过某些方式将HTTPS 降级为HTTP,从而实现中间人攻击。

其次使用HTTPS通信,开发时也不要忽视证书的校验,或者对于非法证书不进行处理,这样也容易被中间人攻击。这里给大家推荐文章 HTTPS中间人攻击实践(原理践)

为什么有些软件如Fiddler可以还原https 文/h3>

Fiddler是通过中间代理的方式抓取 文,还原https 文的前提是在客户端的根证书列表下加入Fiddler生成的CA根证书。这样Fiddler就成为CA,可以伪造数字证书,伪装成服务器。但是只能用于测试,不能实现真正意义上的窃取数据。

总结

以上是我们平时开发过程中一些常见的前端安全方面的知识以及我们应该如何防御这些攻击。但是安全的领域相当大,这些内容只是沧海一粟,如果需要深入学习安全防御方面的知识,这是远远不够的。

参考文章:
https://juejin.cn/post/6844904100945985543#heading-10
http://www.atguigu.com/mst/html/gp/17649.html
https://wurh.github.io/2019/03/29/20190401/
https://www.cabeza.cn/blog/2019/05/14/web-security-xss/

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年4月20日
下一篇 2021年4月20日

相关推荐