如何防止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视频编辑工具,可以帮助用户轻松重写、配音和编辑视频。

相关推荐
acrel715 分钟前
医院用电隐患治理与节能降耗及智慧能源平台应用
网络·数据库
染指111016 分钟前
158.Agent-LangGraph-子图(共享状态和不共享状态模式)
开发语言·人工智能·python·ui·agent·agents
wangchunyu11424 分钟前
JAVA JVM内存结构与运行时数据区
java·开发语言·jvm
snow@li38 分钟前
PowerDesigner 全景教程:从业务建模、表结构设计、关系管理到正向/逆向、文档输出
数据库
ss27342 分钟前
PostgreSQL表级锁、行级锁、轻量级锁
数据库·postgresql·区块链
RacentCLM1 小时前
证书即服务CaaS:从申请、续期到部署的自动化链路拆解
运维·数据库·自动化·ssl
SelectDB1 小时前
安全评审卡了三周,我把部署形态的四种选项重新排了一遍
大数据·数据库·云原生
云和数据.ChenGuang2 小时前
Python 常见特殊方法详解:__new__、__init__、__del__、__str__、__repr__ 与 __getattribute__
开发语言·人工智能·python·1024程序员节
xyouyuweizhu2 小时前
字节流与字符流:Java IO 的两条主线该怎么选
java·开发语言·python