c# - 在 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 身份验证连接到数据库,并拥有对数据库表和数据的完全访问权限!我怎样才能防止这种情况?我只希望该应用程序可以访问其数据库吗?
解决方案
我知道这是您应用程序的一些内部数据库?那正确吗?假设应用程序的客户端安装了 Sql 服务器(这是有风险的假设)
不过,如果您希望数据只能用于您的应用程序,我建议您使用 SqlLite 数据库(数据库作为应用程序文件夹中的文件)
您可以按照此处的说明对其进行密码保护: Password Protect a SQLite DB。可能吗?
当然,如果要防止篡改,则必须考虑如何存储密码。如果你这样做了,那在代码中 - 它可以在反编译后查看。然后你将不得不考虑代码混淆。最好从网络获取密钥。
推荐阅读
- visual-studio-code - Mac 上的 VSC 构建 (CMD-Shift-B) 命令问题
- google-bigquery - 有没有办法修改和重命名 BigQuery 中记录内的列,然后使该列保持与以前相同的名称和位置?
- amazon-web-services - AWS Secret Manager 访问拒绝问题
- java - JLabel 不能垂直对齐
- php - Wordpress 帖子/页面未立即发布-> 错过了日程安排
- azure-pipelines - 用于在单个解决方案中构建和发布 Web 应用程序和 Windows 服务(本地)的 Azure 管道
- vue.js - v-for not working on array - 属性或方法“dailyData”未在实例上定义,但在渲染期间引用
- docker - 防止使用无根容器更改挂载中的权限
- python - Python SSH 交互式 Shell 回调数据接收
- r - 使用 dbplyr 的 tail() 等效项?(即返回数据库表的最后 x 行)