编辑:我应该在开始时说这个,我在FronEnd中使用AngularJS,我通过XHR提出所有请求.我正在CSRF Token为每个用户请求开发一个Application .
我应该Token在每次请求后重新生成吗?
就像是
Session::forget("_token") and Session::put("_token", RANDOM_SOMETHING)
Run Code Online (Sandbox Code Playgroud)
或者每个用户使用相同的一个是否足够Session?
有什么好处吗?
小智 18
Laravel 5使用Blades模板,非常简单.
如果您只想要csrf标记的值,可以通过编写以下内容来生成它:
{{ csrf_token() }}
Run Code Online (Sandbox Code Playgroud)
它生成令牌值,如下所示:
7YC0Sxth7AYe4RFSjzaPf2ygLCecJhPbyXhz6vvF
Run Code Online (Sandbox Code Playgroud)
如果您使用的是表单,则可以在表单中添加以下代码行:
{{ csrf_field() }}
Run Code Online (Sandbox Code Playgroud)
这将生成像这样的HTML:
<input type="hidden" name="_token" value="7YC0Sxth7AYe4RFSjzaPf2ygLCecJhblahblah">
Run Code Online (Sandbox Code Playgroud)
Laravel应该为你做这个,你不需要管理创建/删除 _token
<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>">
Run Code Online (Sandbox Code Playgroud)
请参阅此处文档中的"CSRF保护"部分:http://laravel.com/docs/security
要看。如果攻击者不是MITM,就他们无法窃听Web应用程序与API服务器之间的流量的意义而言,则整个会话的单个CSRF令牌就足够了。
假设您也保护服务器端的敏感操作(即,仅允许资源所有者访问资源,例如“删除我的帐户”等),令牌将确保发出请求的浏览器是经过验证的合法主机用户的浏览器。我想,这就是您应该担心的。
另一方面,如果攻击者能够查看Web应用程序与您的API之间的不安全流量,则他们可能会持有CSRF令牌和您的session_id,并透明地进行恶意行为。在这种情况下,为每个请求(POST,或任何执行敏感操作的令牌)授予,使用并随后丢弃令牌只会使他们的工作更加困难,但是您仍然注定要失败。
我的2分钱
| 归档时间: |
|
| 查看次数: |
70056 次 |
| 最近记录: |