我有一个表,看起来像这样,用于组成连接字符串(此表中有大约30条记录):
create table databases (id int not null, databaseserver varchar(30), databasename varchar(30), username varchar(30), password varchar(30), primary key (id))
我总是读到你应该在数据库中散列密码。但是,这不起作用,因为必须将密码转换回文本。
我该如何处理?透明数据加密听起来像答案。我是否只能加密此列而无需修改使用该列的任何代码。
答案 0 :(得分:2)
TDE不会解决您的问题 - 这只会加密数据库文件。这不是一个坏主意,但它不会阻止访问该表的用户读取密码。
首先,如果您有任何其他选项,不会在数据库中存储带密码的连接字符串。这很容易出错。
如果这些都不适合您,则必须加密数据。您可以在SQL Server MSDN has more information中执行此操作。但是,如果您在数据层(或更具体地说,数据库)中完全处理此问题,则可能无法提供足够的保护 - 只要请求进入看起来包含正确的凭据,它就会获得明文密码。
如果您需要每个应用程序知道正确的密钥,您也可以重构一些内容,以便应用程序只使用可信连接(并且目标服务器配置为正确允许)...