我想知道如何在Laravel中禁用CSRF令牌以及我必须禁用它的位置。禁用它是否很好?
答案 0 :(得分:29)
您可以通过编辑在少数路线上禁用CSRF。
App\Http\Middleware\VerifyCsrfToken
并在受保护的
中添加您自己的路线名称$except = [] array.
这似乎不是一个好习惯,因为这样做我们正在删除Laravel的安全功能。
答案 1 :(得分:4)
您可以在app/http/Kernel.php
- 中间件组中的web
中将其停用。
Is this good to disable it or not?
不,不是。阅读Wikipedia page about CSRF以了解CSRF是什么,CSRF-Token阻止CSRF。
答案 2 :(得分:4)
CSRF令牌可保护您的应用程序及其用户免受跨站点请求伪造。有关这方面的更多信息,请阅读:
https://en.wikipedia.org/wiki/Cross-site_request_forgery
令牌通过Laravel中的中间件验证。如果您查看文件app/Http/Middleware/VerifyCsrfToken.php
,您会看到它可以选择添加应免除CSRF验证的网址。
<?php
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as BaseVerifier;
class VerifyCsrfToken extends BaseVerifier
{
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
//
];
}
如果要完全禁用它,可以在web
中名为app/Http/Kernel.php
的中间件组中找到它。这些是默认情况下通过HTTP请求触发的中间件。
我不建议尽可能禁用它。
答案 3 :(得分:4)
在laravel中7。
打开文件\App\Http\Middleware\VerifyCsrfToken.php
对所有路线均禁用
protected $except = [
'*',
];
对某些路线禁用
protected $except = [
'mobile/*',
'news/articles',
];
我很长一段时间都在寻找如何完全禁用CSRF的方法,有很多相同的示例,但它们无济于事
答案 4 :(得分:0)
您好,只需转到app / Http / Kernel.php文件,只需注释掉第31行
// \App\Http\Middleware\VerifyCsrfToken::class,
答案 5 :(得分:0)
许多人解释了如何做到这一点,但他们没有解释网址的外观。
编辑应用程序/Http/Middleware/VerifyCsrfToken.php
uname=loginuser.username
print(loginuser.get_full_name)
在$ except array();中我们添加一个仅包含简单字符串的网址。这通常取决于您的路由设置指向控制器。
例如,我的Controller文件夹中有一个UserController.php文件。我有一条类似的路线。在web.php路由文件中。
namespace App\Http\Middleware;
use Illuminate\Foundation\Http\Middleware\VerifyCsrfToken as Middleware;
class VerifyCsrfToken extends Middleware
{
/**
* Indicates whether the XSRF-TOKEN cookie should be set on the response.
*
* @var bool
*/
protected $addHttpCookie = true;
/**
* The URIs that should be excluded from CSRF verification.
*
* @var array
*/
protected $except = [
'/user/my_function'
];
}
或者,如果您只是因为不知道如何使用CSRF而实际上不需要禁用CSRF或添加URL,则提出此问题。您可以使用此方法。
将这些行添加到您的app.blade.php中(如果它用于与ajax相关的调用)。
Route::post('/user', 'UserController@my_function')->name('my_function');
答案 6 :(得分:-1)
刚打开kernel.php(app / http) 并禁用
App\Http\Middleware\VerifyCsrfToken::class,