前后端分离架构解决方案(从Session到Token)

  系统应用架构的发展,从早期的单体架构,发展到现在基本上都是前后端分离的架构(很大程度上是因为移动互联网的飞速发展)。开发模式上,也从早期的程序员前后台都需要写,演化成现在分为前端开发工程师和后端开发工程师。具体如下图所示:

  

 

 

   

  前后端分离之后,就会面临着很多问题,之前传统的session认证方式,对移动端的支持有限,尤其是安全层面的问题。传统用session进行登录流程如下:

 

 

 

    而用session做认证,容易遭受CSRF的攻击,如下图最经典的银行转账案例:  

    

 

 

 

  而CSRF有两个经典的解决方案

  其一、验证HTTP Referer 字段

  根据 HTTP 协议,在 HTTP 头中有一个字段叫 Referer,它记录了该 HTTP 请求的来源地址。

   这种方法的显而易见的好处就是简单易行,只需要在最后给所有安全敏感的请求统一增加一个拦截器来检查 Referer 的值就可以。

   但是不安全, Referer有的浏览器也可以篡改,比如IE6。

 

   其二、HTTP头部中添加Token,具体Token的验证流程如下所示:

  

 

 

  最后说一下CSRF的实现方式主要有下面三种:

  1、Nginx等中间件中配置。

  2、程序中借助于框架,比如SpringSecurity。

  3、自定义代码验证拦截(网关层)。  

 

 

 

最后,欢迎扫码加入星球《极客e家》,星球里,大咖云集,我们将一起打造极客文化。在这里,您将体会到:

【科技动态】:我们聚焦软件技术发展趋势和行业最新动态,尤其ChatGPT这波的AI风向标,让您轻松掌握一手科技资讯。

【共同成长】:除了传统的【系列课程 & 面试】栏目之外,我们还将分享优质的技术文章和工具等,还有更多来自星主和各个小伙伴的原创学习资料,让您的技术更上一层楼,生产性更进一步提高,我们还提供技术交流和问答平台,更有针对性的解决您的问题。

【小白逆袭】:如果您是刚入行或工作不久的软件小白,在这里,您将在极客文化的熏陶中,引领您走向技术大牛之路。

【技术面试】:我们也会分享一些技术面试的重点和常问的技术问题。

【行业资讯】:分享和探讨最新行业资讯,尤其是星主所在城市(大连)的软件行业动态和技术趋势。

更多精彩内容,期待您在星球中探索。

 

posted @ 2022-05-19 14:57  匙亮旭  阅读(1449)  评论(0)    收藏  举报