【问题标题】:Laravel - CSRF for custom ajax postsLaravel - 用于自定义 ajax 帖子的 CSRF
【发布时间】:2014-11-26 03:39:51
【问题描述】:

要在 laravel 中动态拉取部分视图,您可以使用 ajax。从安全的角度来看,您通常会使用 laravel 提供的令牌来避免 csrf 攻击。 很多时候,您不需要完整的 HTML 表单,只需使用 jquery 发布数据,因此您可以检索部分视图作为响应,并将其注入您的 HTML。

我知道在 HTML 表单中,您可以包含 laravel 的令牌以避免 csrf,但如果它是通过 jquery 的 ajax 请求而没有表单,并且您在同一页面上有许多元素通过 ajax 在他们的例如,单个点击事件是否需要多个不同的令牌来保护自己免受 csrf 攻击,或者您可以在 HTML 中创建一个全局行,例如:

<div style="display: none;" data-token="{{ csrf_token() }}">

在页面上的特定区域中,当您为其编写 jquery 发布请求时,您可以将其用于所有非表单 ajax 请求。我要问的是,对于非表单元素 jquery 发布请求,您可以使用单个数据令牌属性,还是每个非表单 jquery 元素都有自己的 csrf_token 数据属性发送到路由以防止 csrf 攻击?

【问题讨论】:

  • 重复:stackoverflow.com/questions/14715250/… 请注意,laravel 将为每个会话生成相同的 csrf_token。这意味着无论您有多少表单,即使您刷新页面,只要会话未过期,csrf_token 将具有相同的值。如果你愿意,你可以自己生成,但你必须在它拥有它之前加载并验证它。

标签: laravel csrf


【解决方案1】:

尝试在 javascript 中创建一个全局变量来保存 _token 的当前值,您可以将此代码添加到您的 html 标头中

<script> var _token = '<?php echo csrf_token(); ?>'; </script>

然后将该 _token 放到每个 ajax 请求中

(假设您使用 csrf 检查过滤了路由)

【讨论】:

    猜你喜欢
    • 2016-02-05
    • 2020-06-16
    • 2015-10-31
    • 1970-01-01
    • 2017-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-01
    相关资源
    最近更新 更多