Laravel 5/表单安全(需要说明)

标签 laravel security

我并不完全相信我已经足够了解 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/

相关文章:

c - Tim Newsham 格式字符串利用

javascript - jquery 数据表自定义过滤器

c# - .NET 程序集在网络驱动器上以部分信任的方式运行,但所有其他程序集以完全信任的方式运行

c - 如何在gdb中动态插入复杂输入

php - excel导入时如何返回变量

php - .htaccess 拒绝所有,包括 htaccess 文件和显示 404 - 我该怎么做?

security - Lisp 应用程序和网络应用程序是否需要特殊的输入清理?

Laravel 向路由组添加自定义中间件

php - Laravel 5.6 奇怪的行为 - Laravel 在重命名后看不到 Controller

php - laravel中如何使用foreach向数据库中添加数据