SQL Server 禁止创建表:权限设置与安全加固指南

Nora
Nora
发布时间:2026-10-13| 5人浏览过
原创

当服务器被植入恶意表(如 D99_CMD、D99_REG)时,单纯修补代码漏洞往往难以根除后门风险。最有效的紧急止血措施是收紧数据库权限。本文将演示如何撤销普通用户的“创建对象”权限,使攻击者无法利用 SQL 注入直接生成新表。

理解问题的根源

在常见的 Web 安全事件中,攻击者通过 SQL 注入点执行 create table 语句,用于存储窃取的Cookie或建立反弹连接的跳板。许多站长习惯使用 `sa` 或具有广泛权限的账号连接数据库,这使得攻击者在获得注射点后拥有极大的破坏力。

虽然 Windows NT 权限和 IIS 文件权限(MACFEE等工具)能阻挡部分尝试,但直接在数据库层面切断“新建结构”的能力,是更直接的防御手段。

禁止创建数据库表的权限设置

以下操作适用于 Microsoft SQL Server 环境(包括 2000及后续版本)。此方法旨在降低权限,防止非必要的结构变更。

第1步:进入数据库属性与权限管理

打开 SQL Server Enterprise Manager 或 Management Studio (SSMS)。

  1. 展开 “数据库”,选中您的目标数据库(例如生产库)。
  2. 右键点击数据库名称,选择 属性。
  3. 在弹出的窗口中,切换到 权限(Permissions)选项卡。

在此界面中,您可以看到当前关联的所有数据库用户列表及其对应的系统权限。

第2步:撤销 CREATE TABLE 权限

这一步是关键,它剥夺了特定用户在该数据库中创建新对象的权利。

  1. 在用户列表中,选中受到信任的应用程序连接账号(请勿选择 sa 管理员账号)。
  2. 在下方权限列表中,找到 Create Table。
  3. 将该权限设置为 DENIED(拒绝)或清除 GRANT(授予)选项。

注意:如果使用的是较新的 SSMS 版本,可能需要进入安全性 → 用户 → 选择具体用户 → securables 选项卡进行精细控制。确保该用户仅保留 SELECT, INSERT, UPDATE, DELETE 等基本数据操作权限。

第3步:测试验证

权限修改后,需要通过脚本验证是否生效。这不仅是测试,也是确认你的应用程序是否因权限不足而报错的重要环节。

使用原本可以成功连接且拥有旧有权限的账号执行以下 SQL 语句:

CREATE TABLE dxytmp (name varchar(255), id int)

如果权限设置正确,系统将返回错误提示:

该错误明确告知:“拒绝了 CREATE TABLE 权限”。至此,攻击者将无法再向您的数据库中强行写入临时表。

补充安全加固建议

仅靠数据库权限不足以应对所有威胁,建议配合以下安全措施:

  • IIS 目录权限设置: 确保上传目录和动态页面(.asp/.php)文件夹无执行权限,仅允许静态资源读取。
  • 部署 WAF 防火墙: 在 Web 层拦截包含 exec, drop, create 等高危关键字的请求。
  • 检查已知后门: 使用杀毒软件或专业工具全盘扫描服务器,查找已遗留的木马文件(如常见的大马或小马类文件)。

总结

禁止用户创建表是数据库权限最小化原则的重要实践。虽然无法修复代码层面的 SQL 注入漏洞,但它能极大增加攻击者的实施成本,有效防止网站被挂马后的进一步内网穿透和数据持久化。以上就是SQL Server禁止创建表权限设置的详细内容,更多关于数据库安全防护的资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。