我并不完全相信我已经足够了解 Laravel 形式的安全性。例如,如果表单包含<input type="hidden" name="user_id">
那么显然黑客可以在提交更新之前更改该值。
虽然我看过 here在CSRF,我还没有完全理解这是否足够保护?
例如。综上所述,如果我去一个站点打开一个表单来编辑一个我可以查看但不能更改的记录,并恶意更改“user_id”,那么该表单是否受到 {{ csrf_field() }}
保护就足够了?或者我必须使用一些进一步的安全措施,例如 Crypt::encrypt($id)
隐藏 user_id(保存在数据库中)和 Crypt::decrypt($id)
?
在客户端浏览器中公开行 ID(如用户 ID)是否被认为是一种不好的做法(即使所有内容都是通过 https 发送的)?
非常感谢
最佳答案
不,在这种情况下仅使用 CSRF token 是不够的。您还需要使用策略、防护、中间件来保护您的应用程序。
在这种情况下,有人可以更改 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 5/表单安全(需要说明),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47997208/