首页 > 解决方案 > 在 SQL Server 中创建隐藏数据库

问题描述

我用 C# 编写了一个连接到 SQL Server 数据库的 Windows 应用程序。我从应用程序内部运行此查询以创建可能对 PC 用户隐藏的 SQL Server 用户身份验证:

SET @LoginName = 'TestAdmin'
SET @Password = 'pass@word1'

-- Create user
SET @SQL = 'Create Login ' + @LoginName + ' with Password = ''' + @Password + ''''

EXEC sp_executesql @SQL

-- Adding user to sysadmin role
EXEC sp_addsrvrolemember @LoginName, 'sysadmin'

我打算上传一个.SQL文件来创建包含表和数据的数据库,所有这些都可以通过应用程序以编程方式完成。我不希望应用程序用户或 PC 所有者拥有对该数据库的完全访问权限。

问题:

当我进入 SQL Server Management Studio 时,作为用户,我可以简单地使用 Windows 身份验证连接到数据库,并拥有对数据库表和数据的完全访问权限!我怎样才能防止这种情况?我只希望该应用程序可以访问其数据库吗?

标签: c#sql-serverdatabase

解决方案


我知道这是您应用程序的一些内部数据库?那正确吗?假设应用程序的客户端安装了 Sql 服务器(这是有风险的假设)

不过,如果您希望数据只能用于您的应用程序,我建议您使用 SqlLite 数据库(数据库作为应用程序文件夹中的文件)

您可以按照此处的说明对其进行密码保护: Password Protect a SQLite DB。可能吗?

当然,如果要防止篡改,则必须考虑如何存储密码。如果你这样做了,那在代码中 - 它可以在反编译后查看。然后你将不得不考虑代码混淆。最好从网络获取密钥。


推荐阅读