提升Laravel 9+中AJAX的CSRF令牌管理:最佳实践
P粉242741921
P粉242741921 2023-08-08 19:46:23
0
1
390

In the context of Laravel 9+, AJAX请求需要暴露CSRF令牌以确保必要的安全措施。然而,不同的令牌放置方法可能会影响代码的优雅和组织。主要的两种方法如下:

方法1:通过Blade语法直接插入CSRF令牌

在这种方法中,CSRF令牌通过Blade语法直接嵌入到JavaScript中。(在多个地方重复相同的代码)


$(document).ready(function() { $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': "{{ csrf_token() }}" } }); }); 

虽然这种方法可以将令牌保持在HTML主体之外,但它需要在JavaScript文件中使用Blade语法,使关注点的分离变得复杂。

方法2:从元标记中提取CSRF令牌

这种方法涉及将CSRF令牌放置在HTML元标记中,然后提取它以在AJAX设置中使用。


$(document).ready(function() { $.ajaxSetup({ headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') } }); }); 

在这种方法中,尽管令牌在HTML中暴露出来(无论如何都会暴露),但它简化了JavaScript文件的管理,重用,并且更容易保持代码/关注点的分离。

考虑到上述情况,我猜想方法2更好,因为它更优雅,能够更好地分离关注点。或者在Laravel中有没有其他最佳实践来管理使用AJAX请求时的CSRF令牌放置,以提供更好的安全性和代码组织的平衡?期待您的见解。

PS:我查看了例如https://cheatsheetseries.owasp.org/cheatsheets/Cross-Site_Request_Forgery_Prevention_Cheat_Sheet.html,但其中一些内容超出了我的理解范围。


P粉242741921
P粉242741921

全部回复 (1)
P粉988025835

令牌只对你希望拥有它的用户暴露(这样他们才能将其发送回给你)。

它不会暴露给任何攻击者。(除非他们以某种方式破坏了服务器和浏览器之间的通信,这意味着他们已经获得比成功的CSRF攻击更多的访问权限。)

选择直接的选项。


    最新下载
    更多>
    网站特效
    网站源码
    网站素材
    前端模板
    关于我们 免责声明 Sitemap
    PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!