Nor*_*gul 8 php cookies csrf token laravel
我知道CSRF攻击是什么,我已经阅读了有关它的文档,但是我无法理解CSRF保护如何深入工作,并且有一些我无法找到的一般性问题.
在文档中,它说Laravel会自动为其生成令牌
...由应用程序管理的每个活动用户会话.
session.php?session.php120分钟的默认生命周期相同?domain属性设置为导航到同一个应用程序处理的子域,那么该cookie会发生什么"." . env('APP_URL')?因此,一旦令牌被创建并存储在某个地方,在发出请求时,我必须向csrf_token()表单提供隐藏属性,或者将其生成为元字段并在我正在执行AJAX请求时重定向到我的JS文件.
那么当我实际提出请求时,在低级别会发生什么?请求生成csrf_token(),Laravel加密cookie,Laravel检查发送的cookie是否与会话中的cookie相同.如果是,则表示请求有效,如果不是,则抛出TokenMissmatchException?
这是否意味着cookie生命周期内的每个请求都具有相同的令牌?
Laravel是否以不同方式加密请求和响应cookie?如果我在EncryptCookies类I中从cookie加密中排除令牌获得相同的令牌,但是当我离开它时,哈希是不同的.
如何_token在请求数据中提供与转发令牌不同的X-CSRF-TOKEN标头?如果我看到它们未加密,Laravel如何验证这些?请求后他们是否加密?
- 它在哪里创建令牌(代码的哪一部分触发它)?
浏览完助手文件后
/vendor/laravel/framework/src/Illuminate/Foundation/helpers.php
Run Code Online (Sandbox Code Playgroud)
其中有辅助方法的定义csrf_token(),该方法调用令牌方法
/vendor/laravel/framework/src/Illuminate/Session/Store.php
Run Code Online (Sandbox Code Playgroud)
如果您检查未设置start()哪个调用,它会将随机的 40 个字符的字符串保存到会话中,密钥为regenerateToken()_token_token
/**
* Regenerate the CSRF token value.
*
* @return void
*/
public function regenerateToken()
{
$this->put('_token', Str::random(40));
}
Run Code Online (Sandbox Code Playgroud)
- 创建后令牌存储在 cookie 中的哪里?在会议中?如何提取并查看已存储的内容?这一切实际上都是由session.php控制的吗?
令牌存储在会话中,您可以使用 提取它session('_token')。session.php使用中控制会话过期时间
'lifetime' => env('SESSION_LIFETIME', 120),
'expire_on_close' => false,
Run Code Online (Sandbox Code Playgroud)
- 当我重新加载页面时,令牌是否仍然与 session.php 具有 120 分钟默认生存期相同?
如果您办理start()登机手续/vendor/laravel/framework/src/Illuminate/Session/Store.php
/**
* Start the session, reading the data from a handler.
*
* @return bool
*/
public function start()
{
$this->loadSession();
if (! $this->has('_token')) {
$this->regenerateToken();
}
return $this->started = true;
}
Run Code Online (Sandbox Code Playgroud)
如果会话没有 ,则重新生成令牌_token。所以_token在会话过期之前都是一样的
| 归档时间: |
|
| 查看次数: |
628 次 |
| 最近记录: |