好吧,伙计们,我正在编写一个Django应用程序,我只是想知道实际上csrf令牌是什么以及它如何保护数据.如果不使用csrf令牌,帖子数据是不安全的?
我知道如何使用csrf_token但我只需要一些信息它是如何工作的.
在现代网络浏览器中,假设我做了setTimeout10分钟(在12:00),5分钟后让计算机进入睡眠状态,当系统再次唤醒时会发生什么?如果它在10分钟之前(12:09)或之后(16:00)醒来会发生什么?
我问的原因是因为我想每10分钟要求一个新的身份验证令牌,我不确定浏览器是否会做正确的事情并且如果长时间醒来后立即请求新的令牌时间.
澄清:我不想使用cookies - 我正在尝试在这里建立一个Web服务; 是的,服务器将拒绝旧的和无效的令牌.
我创建了一个包含很多字段的表单,用户可以在其中创建一个无限的字段。如果用户在它上面花费更多时间 CSRF token get expires 并且当他点击提交 LARAVEL 时返回错误 CSRF token mismatch。那么如何通过使用 ajax 调用获取新的 CSRF 令牌,以便我可以定期更新 CSRF?我无法刷新或重新加载表单。
我正在开发 Laravel 8 框架,我已在实时 Cpanel 服务器上添加了该应用程序,然后它开始显示以下错误:
419 页已过期
我知道通常缺少 CSRF 令牌将是主要问题,但在此,我添加了 CSRF 令牌,我使用 LARAVEl Blade 语法,因此添加 LARAVEL Blade 表单语法将直接添加“令牌”(CSRF)。
{{ Form::open( [ "url" => \URL::route("front.login.check"), "autocomplete"=>false,"id" => "login_form" ] ) }}
Run Code Online (Sandbox Code Playgroud)
这会自动添加CSRF,我尝试过直接添加,但是每个POST请求最终都会出现在419 PAGE EXPIRED页面上。
我已经检查了什么?
CSRF Token中并没有缺失Form419页面php artisan cache:clear并dump-autoload命令,但问题仍然存在。storagevendorcache请帮我解决这个问题,接下来我需要检查什么才能解决这个问题?
我在Laravel应用程序中使用Ajax发出了一堆POST请求。
典型的请求如下所示:
$.ajax({
url: '/path/to/method',
data: {'id': id},
type: 'POST',
datatype: 'JSON',
success: function (response) {
//handle data
},
error: function (response) {
//handle error
}
});
Run Code Online (Sandbox Code Playgroud)
我已经设置了CSRF令牌,并且大多数情况下一切正常:
jQuery(document).ready(function(){
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
});
Run Code Online (Sandbox Code Playgroud)
但是,经过长时间的中断(例如,计算机长时间处于睡眠状态),所有Ajax调用都会返回419错误,就像未设置令牌一样。重新加载页面后,一切恢复正常。这是在本地服务器上。
我该如何解决?通话前是否可以通过某种方式“更新”令牌?$.ajaxSetup每次通话前我都需要做一点吗?仅在页面加载一次就做还不够吗?
php ×3
csrf ×2
laravel ×2
ajax ×1
javascript ×1
jquery ×1
laravel-5 ×1
laravel-8 ×1
post ×1
settimeout ×1