php - 在 Laravel 中设置 CSRF 保护的更好方法是什么?

标签 php laravel csrf

将此添加到 BaseController.php:

public function __construct() {
    // Run the 'csrf' filter on all post, put, patch and delete requests.
    $this->beforeFilter('csrf', ['on' => ['post', 'put', 'patch', 'delete']]);
}

或将其添加到 routes.php 中:

Route::when('*', 'csrf', array('post', 'put', 'patch', 'delete'));

哪种方法更好,为什么?

最佳答案

两者会产生相同的效果,但 Router::when 方法似乎更优。

如果没有正确的 parent::__construct() 调用,很容易扩展错误的 Controller 或重载 BaseController::__construct()。在这两种情况下都不会发生错误。如果这是偶然发生的,你就会有一个无声的安全漏洞:

class FooController extends App\BaseController
{
    public function __construct()
    {
         $this->initializeSomething() 
         // somebody forgot to call parent::__construct()
    }

    public function action()
    {
         // no CSRF protection here!
    }
}

使用路由器似乎不太容易出错,没有简单的方法可以在以后意外覆盖过滤器。

Route::when('*', 'csrf', array('post', 'put', 'patch', 'delete'));

关于php - 在 Laravel 中设置 CSRF 保护的更好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27586492/

相关文章:

php - Symfony2 - 空 CSRF token

rest - 如何使用 Postman Rest Client 获取和重用 CSRF token

php - OpenX:移动到不同的服务器

数字的 PHP serialize() 输出很糟糕

php - 如何为两个用户(教师、学生)创建数据透视表,访问分配给并注册到使用 Laravel 的同一类(class)表

sql - Eloquent Laravel Where And Or And

php - 如果字段的值高于指定值,则更新 sql 表字段

PHP 警告 : array_filter() expects parameter 2 to be a valid callback, 第二个数组成员不是有效方法

php - 我在哪里放置我的自定义类和函数在 Laravel 中

javascript - 为什么使用 POST 方法可以防止 json 劫持?