如何防止SQL注入泄露元数据_限制数据库信息查询权限

禁用元数据访问需分层防控:MySQL用skip-show-databases+限定库权限;PostgreSQL撤回pg_catalog USAGE及关键视图SELECT;SQL Server撤销VIEW DEFINITION;应用层禁用运行时查元数据。MySQL 中如何禁用 information_schema 查询默认情况下,普通用户也能查 information_schema,这是 SQL 注入后获取表名、列名的主要跳板。不能靠"不拼接 SQL"就高枕无忧,得从权限层堵死。实操上,直接回收对 information_schema 的 SELECT 权限无效(MySQL 8.0+ 允许显式授权但不生效),真正有效的是:限制用户只能访问指定数据库,并关闭元数据访问开关。创建用户时用 CREATE USER 'app'@'%' IDENTIFIED BY 'pwd',**不要**加 WITH GRANT OPTION只授具体库权限:GRANT SELECT, INSERT, UPDATE ON myapp_db.* TO 'app'@'%',**不授** mysql 或 information_schema 任何权限MySQL 8.0.29+ 可设系统变量:SET PERSIST information_schema_stats_expiry = 0(降低统计信息缓存,间接增加探测成本,非根治但有干扰作用)关键一步:在 my.cnf 中加 skip-show-databases ------ 这会让 SHOW DATABASES 对非 super 用户返回空,连库名都看不到PostgreSQL 怎么关掉 pg_catalog 和 information_schemaPostgreSQL 的元数据更开放,默认所有用户都能查 pg_tables、pg_columns 等视图。不像 MySQL 那样能简单禁用,得靠撤销视图权限 + 撤销 schema 使用权。注意:不能删或重命名 pg_catalog,那是核心 schema;也不能直接 REVOKE SELECT ON ALL TABLES IN SCHEMA pg_catalog,因为部分视图依赖 superuser 权限,普通 revoke 会报错。先确保应用用户不是 pg_read_all_data 角色成员(这个角色默认可读所有系统表)逐个撤回关键视图权限:REVOKE SELECT ON pg_tables, pg_views, pg_columns FROM app_user撤回整个 schema 的使用权限:REVOKE USAGE ON SCHEMA pg_catalog FROM app_user(这步让 SELECT * FROM pg_catalog.pg_tables 直接报 permission denied for schema pg_catalog)PostgreSQL 15+ 支持行级安全策略(RLS),可在 pg_tables 上加策略,但实际中极少用------太重,且 RLS 不作用于元数据视图SQL Server 里 sys.tables 查不到的真正原因SQL Server 默认对普通用户隐藏系统视图内容,但只要用户有 VIEW DEFINITION 权限或属于 db_owner,就能看到真实表结构。泄露常发生在误授了这类权限,或者用了 sa 登录的应用连接字符串。 Vozo Vozo是一款强大的AI视频编辑工具,可以帮助用户轻松重写、配音和编辑视频。

相关推荐
数行拙笔6 小时前
Redis---hash类型
数据库·redis·哈希算法
哈__6 小时前
MCP 协议落地实践:国产化数据库 AI 一站式 SQL 诊断调优方案
数据库·人工智能·sql
一招合理7 小时前
Accordion:一种HBase内存压缩算法
大数据·数据库·hbase
盼小辉丶7 小时前
OpenCV-Python实战——分析与加速OpenCV应用程序
python·神经网络·opencv·计算机视觉
明亮 Blog7 小时前
Wi-Fi 6/7的物联网“芯”机遇:高带宽低延时如何重塑智慧工厂的AGV物流革命
服务器·网络·数据库
buhuizhiyuci7 小时前
【python篇——一周速通python语法】python的条件语句和循环语句
开发语言·python
枫叶丹7 小时前
告别“人肉”搬砖:当AI助手直连数据库,SQL优化从未如此简单
数据库
学AI不秃头7 小时前
官方要 16GB,实测 4-bit 压到 2.9GB:把 LocateAnything-3B 搬上 8GB Jetson
python·深度学习·机器学习·计算机视觉·机器人
zyplayer-doc7 小时前
企业文档的进化:网盘和在线文档的下一个升级方向—知识库系统
java·大数据·数据库·人工智能·ocr
Leon-Ning Liu7 小时前
【真实经验分享】Oracle RAC 修改 db_file_name_convert / log_file_name_convert 参数实践
数据库·oracle