Laravel 5/Form安全(需要澄清)
不完全有信心我已经理解了Laravel形式的安全性。例如,如果表单包含 <input type="hidden" name="user_id">
那么显然黑客可以在提交更新之前更改该值。 虽然我在CSRF看了here,但我还没有完全理解这是否足够的保护?Laravel 5/Form安全(需要澄清)
E.g.考虑到上述情况,如果我访问网站并打开表单以编辑记录,我可以查看但不能更改,并恶意更改“user_id”,表单是否受{{ csrf_field() }}
保护或我必须雇用一些进一步的安全性,如Crypt::encrypt($id)
隐藏user_id(保存在数据库中)和Crypt::decrypt($id)
?
在客户端浏览器中显示行标识(如用户标识)是否被认为是不良做法(即使所有内容都是通过https发送的)?
很多谢谢
回答:
不,在这种情况下仅使用CSRF令牌是不够的。您还需要使用策略,警卫和中间件来保护您的应用程序。
在这种情况下,一个人可以改变user_id
如果从形式阅读后使用,所以你需要使用策略这样一个保护数据(本例中是from the docs):
public function update(User $user, Post $post) {
return $user->id === $post->user_id;
}
此外,当您需要使用用户ID时,如果需要整个对象,请始终使用auth()->id()
或auth()->user()
。切勿从表单中读取用户ID。
回答:
Laravel框架存储此CSRF字段的值,如会话变量,并在您提交时与其匹配。
当您提交表单时,Laravel会检查存储的会话值中的值。如果有一个不匹配错误被抛出! :)
回答:
CSRF令牌保护网站免受跨站请求,意味着外部用户不能复制表单并发送帖子请求。 Laravel使用csrf_field()或Session :: token()函数创建一个随机会话令牌,我们将其放置在隐藏字段中。在处理表单之前,Laravel使用表单中的隐藏字段值来检查会话。
以上是 Laravel 5/Form安全(需要澄清) 的全部内容, 来源链接: utcz.com/qa/266989.html