我对Laravel表格中的安全性了解不够完全不确定。例如,如果一个表单包含,
<input type="hidden" name="user_id">
则显然黑客可以在提交更新之前更改该值。当我在这里查看CSRF时,我还不完全了解这是否足够的保护?
例如,以上述内容为例,如果我去一个网站并打开一个表格来编辑我被允许查看但不能更改的记录,并且恶意更改了“ user_id”,那么该表格是否受保护 {{ csrf_field() }}还是我必须使用一些进一步的安全性,例如Crypt::encrypt($id)隐藏user_id(保存在数据库中)和Crypt::decrypt($id)?
在客户端浏览器中公开行ID(例如用户ID)是否被视为不好的做法(即使所有内容都通过https发送)?
非常感谢
不,在这种情况下仅使用 CSRF 令牌是不够的。您还需要使用策略、防护装置、中间件来保护您的应用程序。
user_id在这种情况下,如果您从表单中读取并随后使用,则有人可以更改,因此您需要使用像这样的策略来保护数据(此示例来自文档):
public function update(User $user, Post $post)
{
return $user->id === $post->user_id;
}
Run Code Online (Sandbox Code Playgroud)
另外,当您需要使用用户 ID 时,如果您需要整个对象,请始终使用auth()->id()or 。auth()->user()切勿从表单中读取用户 ID。
| 归档时间: |
|
| 查看次数: |
237 次 |
| 最近记录: |