前后端分离架构解决方案(从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风向标,让您轻松掌握一手科技资讯。
【共同成长】:除了传统的【系列课程 & 面试】栏目之外,我们还将分享优质的技术文章和工具等,还有更多来自星主和各个小伙伴的原创学习资料,让您的技术更上一层楼,生产性更进一步提高,我们还提供技术交流和问答平台,更有针对性的解决您的问题。
【小白逆袭】:如果您是刚入行或工作不久的软件小白,在这里,您将在极客文化的熏陶中,引领您走向技术大牛之路。
【技术面试】:我们也会分享一些技术面试的重点和常问的技术问题。
【行业资讯】:分享和探讨最新行业资讯,尤其是星主所在城市(大连)的软件行业动态和技术趋势。
更多精彩内容,期待您在星球中探索。

浙公网安备 33010602011771号