Laravel / 数据库 - 安全

Posted

技术标签:

【中文标题】Laravel / 数据库 - 安全【英文标题】:Laravel / Database - Security 【发布时间】:2021-06-10 10:42:26 【问题描述】:

目前,我正在考虑使用 laravel 时数据库端(在我的例子中是 postgres)的安全级别。

所以我遇到了这个问题:

F.e.我在 Laravel 中有两个用户角色:用户、管理员。

用户需要对数据库的选择、插入、更新权限。 管理员需要在数据库级别选择、插入、更新、删除和创建。

所以在这种情况下,我需要在 Laravel 中使用 2 个不同的连接:

为用户提供一个连接 一个管理员连接(具有扩展权限)

这是常用的吗?因为我没有找到很多关于这个的信息。

你如何解决 Laravel 中不同角色拥有特定数据库权限的问题? 你(只)依赖内部中间件吗?

提前谢谢你。

干杯

【问题讨论】:

只是出于好奇,为什么管理员需要在应用程序级别创建新的数据库表?您不是指在部署新功能版本时进行数据库迁移,对吗? 应用程序创建公式。对于每个新公式,都需要一个新表(因为每个公式都有自定义属性)。这可以使用 UI 上的“管理员角色”来完成。考虑了很长时间将所有公式结构和数据放入两个表中(使用 json),但最终每个公式的表更加结构化和更快。 【参考方案1】:

在 Laravel 应用程序中提供基于角色的访问控制的最常见方法是通过使用 授权 功能。

除了提供内置的身份验证服务外,Laravel 还提供了一种简单的方法来授权用户对给定资源的操作。例如,即使用户通过了身份验证,他们也可能无权更新或删除某些 Eloquent 模型或由您的应用程序管理的数据库记录。 Laravel 的授权功能提供了一种简单、有条理的方式来管理这些类型的授权检查。

https://laravel.com/docs/8.x/authorization

【讨论】:

谢谢erikgaal,我已经知道授权功能了。我认为在数据库而不是应用程序级别设置授权会更安全。

以上是关于Laravel / 数据库 - 安全的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用安全资产功能时将图像从数据库传递到 laravel 中查看

在没有提供 API 密钥的情况下访问 Laravel 中的数据库有多安全?

Laravel 个人资料页面中的安全问题

PHP安全三板斧:过滤篇Laravel底层SQL注入规避

Laravel笔记-用户登录时密码进行RSA加密(提高系统安全性)

Laravel笔记-用户登录时密码进行RSA加密(提高系统安全性)