php - 仅允许用户使用数据库中的某些信息

标签 php mysql sql security

我有一个包含 100 个左右用户的信息的数据库。我有 2 个具有数据库权限的 MySQL 用户。 root 以及特定的数据库用户“目录”。用户“目录”只有运行 SELECT 语句的权限,没有其他权限。

有些信息对该用户敏感,我使用 PHP 作为代理来检测他们是哪个用户,然后再运行任何 SQL 命令,我如何附加每个 SELECT 语句以包含 WHERE id = '$ their_id' 其中 $their_id 是一个带有 id 的 php 变量。

请注意,用户将能够编写他们的 PHP mysql 命令,我在包含连接信息的 db.php 中定义了这些限制。

我想防止用户 joejoe 不可用时运行类似 SELECT * WHERE id = 'bob' 的命令't bob.


编辑:

我目前没有扫描任何 MySQL 命令,我只是在 db.php 中为它们创建连接。无论如何我可以制作自己的代理 MySQL 命令并强制它们使用它们,这样他们就必须使用我的命令 mysql_query 而不是默认的 mysql_query 来覆盖任何处理我愿意。

最佳答案

与其修改他们的查询,不如让他们始终通过 View 引用数据。他们对创建 View 的真实表没有任何权利。您使用

创建该 View
Create View tablenametheyuse as select * from realtable with id = 'user'

并且只授予该用户查看他的权限。

他们现在可以在 View 上以任何他们想要的方式编写他们的 select 语句。

关于php - 仅允许用户使用数据库中的某些信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5479025/

相关文章:

mysql - 从 MYSQL 迁移到 MongoDB 时的 MongoDB 性能

mysql - 首先列出最匹配的 id,然后列出其他的

php - 升级 Xampp 以运行 php 7

php - 将树状对象结构转换为数组并交互整个事物

PHP 更改为 mysqli。 mysqli_connection 不是全局的吗?

mysql - "INNER JOIN"和 "LEFT JOIN"与 "GROUP BY"

sql - 计算 SQL 中有向图中不同的无向边

php - php 调用的 mysql 性能

php - 使用 PHP-MySQL 反向计数器 FlipClock

mysql - 在选择查询中获取选定字段的替代方法