隐藏开发人员的证书名称

时间:2011-06-10 12:01:53

标签: tsql

我设法创建了一个证书。 这就是我作为一个使用它的方式。


    create certificate CertLogin
--      authorization app_usr
        from file = 'C:\Project\Login.cer'
        with private key 
        (
            file = 'C:\Project\Login.pvk', 
            decryption by password = 'PVK_File_Password'
        )

您注意到我注释掉了“授权app_usr”。 app_usr是运行应用程序的用户标识。

如果我取消注释,app_usr将能够看到sys.certificates表, 并做EncryptByCert()& DecryptByCert()自己手动使用MSSQL。

我实际上正在包装EncryptByCert()& DecryptByCert() 用加密的存储过程,希望能阻止开发人员 以纯文本格式查看密码列值。

如果我发表评论,该应用程序将无法使用加密密码列。

我的目标是,开发人员不能通过隐藏证书名称来破解用户表中密码列的值。你能帮我找一下如何才能找到你吗?

非常感谢。

1 个答案:

答案 0 :(得分:0)

好的,我的解决方法可以在这个博客EXECUTE AS someone else – impersonation in stored procedures找到。

有了这个,我可以把EncryptByCert()&在包装器中使用DecryptByCert(),并避免'app_usr'能够在sys.certificates表中看到证书名称。因此,使开发人员无法手动将加密密码列解密为纯文本。

希望我的经历对其他人也有用。谢谢你花时间在这上面。