【发布时间】:2021-03-19 12:46:31
【问题描述】:
我有一个 Laravel 8 Fortify 系统。我有一个如下所示的注销链接:
<a class="dropdown-item" href="#" onclick="event.preventDefault(); document.getElementById('logout-form').submit();">
Logout
</a>
<form id="logout-form" action="{{ route('logout') }}" method="POST" style="display: none;">
@csrf
</form>
因此,当我单击此注销链接时,它不会删除已登录的会话 cookie。当我点击后退按钮时,它只是将我重定向回主页,就像它仍然登录一样。有什么想法吗?
【问题讨论】:
-
您是否确认会话 cookie 未被清除?如果没有,您可以使用 Debugbar。我认为这是您正在经历的浏览器行为。单击后退按钮时,会呈现上一页的缓存以减少不必要的请求。 .我刚刚检查了我正在处理的 Fortify 应用程序,我得到了相同的结果,但是如果我刷新,中间件会将我重定向到登录视图。
-
没错,这是浏览器缓存。看起来很愚蠢,Laravel 团队没有关注这样的事情,因为这是一个明显的安全问题,尽管它与 Laravel 没有任何关系。如果我注销并且其他人来到我的计算机并单击后退按钮,他可以返回并查看我所谓的安全登录注册系统的主页。我用一个小 php 脚本更改了标题信息并禁用了缓存,解决了这个问题。
-
可能值得回答您自己的问题并将其标记为正确答案,因为您找到了提高应用程序安全性的解决方案。它可能会在未来帮助某人