拒绝访问 MariaDB 中的information_schema

Deny access to information_schema in MariaDB

提问人:Shanky 提问时间:8/12/2021 最后编辑:James ZShanky 更新时间:8/16/2021 访问量:1163

问:

我正在寻找拒绝用户访问 Maria DB 中information_schema的最佳方法。默认情况下,每个用户都有权访问information_schema,但只能查看表中与用户具有适当访问权限的对象相对应的行。

我也想阻止它!,以便有更好的安全性来避免SQL注入。请让我知道我们如何才能做到这一点。

revoke select on information_schema.* from mu@localhost;

这也不起作用,因为即使对于root用户,我也收到访问被拒绝错误。

错误 1044 (42000):用户“root”@“localhost”对数据库“information_schema”的访问被拒绝

我对任何可以阻止访问的解决方案持开放态度,无论是在数据库端还是防火墙端。主要目的是为SQL注入威胁做好更充分的准备。

sql mariadb sql 代码注入 信息架构

评论

0赞 markusjm 8/12/2021
无法访问信息架构如何防止 SQL 注入威胁?
0赞 Shanky 8/12/2021
啊,对不起,让我更具体一点。我知道它不会完全停止SQL注入,但它仍然会造成进一步的损害。我问它比什么都多,因为有一种 sql 注入方法,可以在其中查阅同一表以获取有关它的信息,进行数据库映射。我只是想避免它。我知道这不会是一个完整的解决方案,但如果你能提出一种方法,那么它将非常有帮助。
0赞 markusjm 8/13/2021
根据我对SQL注入的了解,你必须在SQL到达数据库之前完全防止这种情况发生。当恶意行为者到达information_schema桌时,我认为如果你试图阻止它,这场战斗已经失败了。在某些情况下,最好防止它,但我真的想不出任何此类情况。

答:

3赞 Bill Karwin 8/15/2021 #1

您无法撤消对INFORMATION_SCHEMA的访问权限。如果用户有权查询表,则他们隐式有权查询有关这些表的元数据。

若要防止 SQL 注入攻击,应修复客户端代码中的漏洞。例如,在设置动态 SQL 查询的格式时,使用参数化查询而不是字符串连接。

-1赞 Shanky 8/16/2021 #2

谢谢你的回复比尔!

是的,你是对的,为此我通过使用 proxySQL 找到了解决方案。在使用正则表达式创建规则后,我对其进行了测试,它按预期工作。以下是他们官方文档的链接。

https://proxysql.com/

评论

0赞 Georg Richter 8/16/2021
阻止对INFORMATION_SCHEMA的访问意味着,用户无法检索有关creation_time的信息,其他所有内容都可以通过检查元数据或通过检查元数据来检索。编写过滤规则以撤销对信息架构的完全访问权限即使不是不可能,也是相当复杂的,因为您需要复杂的过滤,这并不能降低 SQL 注入的风险。SHOW CREATE TABLE
0赞 Bill Karwin 8/16/2021
我想任何数量的其他工作都比实际修复代码中的漏洞更可取?