我有一个数据库,许多不同的客户端应用程序(少量Web服务、一些Java应用程序和几个.Net应用程序)都连接到该数据库.并不是所有这些都在Windows上运行(遗憾的是,否则只需为数据库连接启用Windows身份验证,就会使这个问题变得很容易回答).目前,密码存储在系统周围的各种配置/属性文件中.理想情况下,只有支持人员有权访问运行文件的服务器,但如果其他人获得了对其中一个服务器的访问权限,他们将拥有足够的数据库权限来获取当前的大量数据.

那么,我的问题是,什么是保持密码可配置的最佳方式,而不让普通读者太容易获得密码?

Edit为了澄清,DB服务器是Windows server 2003,运行MSSQL 2005.

PS:我没有看到任何重复的问题,但是如果有问题,请随时关闭这个.

推荐答案

我猜你是想对不经意的旁观者隐藏密码.如果他们是邪恶的、目光犀利的观察者,可以访问其中一台连接的机器上的所有源代码,那么他们可以通过一些反向工程获得密码.

请记住,您不需要对每个不同的客户端使用相同的保护.以下几个步骤:

  1. 为访问数据库的不同系统创建不同的数据库帐户
  2. 使用您的内置数据库授权,将对数据库的访问限制为仅限于他们需要的内容
  3. 将三重DES(或其他任何)密钥存储在数据库的密码管理器类中.使用此选项可以解密属性文件中的加密值.

我们还考虑过让应用程序在启动时提示输入密码,但尚未实现,因为这似乎很麻烦,而且您的操作人员需要知道密码.可能不太安全.

Database相关问答推荐

TYPO3 OOPS,出现错误!编码:202402180809040864ba5c

Django Save 方法在try 向表中添加新记录时出错

如何在 SQL Server 中将索引从一个表复制到另一个表

PostgreSQL - 按时间戳值分组?

MS Access:如何在 VBA 中压缩当前数据库

在事务提交之前传递 JMS 消息

如何验证 SQLAlchemy ORM 中的列数据类型?

如何找到 Oracle 数据库的 URL?

我可以为 dapper-dot-net 映射指定数据库列名称吗?

保存图像:文件还是 blob?

来自外部源的 Django 用户和身份验证

JOOQ 与Hibernate

在 Rails 中销毁/删除数据库

获取数据库路径

cURL 和 PHP 显示1

如何将特定的、可变的 order订单保存到数据库中

可以将 SQLAlchemy 配置为非阻塞吗?

Android SQLite 数据库,为什么要删除表并在升级时重新创建

数据库与平面文本文件:当性能不是问题时, Select 一个而不是另一个的一些技术原因是什么?

标准化人类皮肤 colored颜色 以进行用户交互