我已经使用注册的“sa”sql 帐户登录到我的 sqlserver,我想打印(而不是更改)我当前的密码。我可以更改它,但我有一个使用当前密码的应用程序。
我已经做好了
select * from sys.sql_logins where name ='sa'
但它给了我一个散列密码
如果不可能,如何将我的 sa 连接导出到另一个 sql server 实例?
我已经使用注册的“sa”sql 帐户登录到我的 sqlserver,我想打印(而不是更改)我当前的密码。我可以更改它,但我有一个使用当前密码的应用程序。
我已经做好了
select * from sys.sql_logins where name ='sa'
但它给了我一个散列密码
如果不可能,如何将我的 sa 连接导出到另一个 sql server 实例?
更改您的应用程序以使用 OTHER THAN sa 用户,最好没有系统管理员权限。通常数据库级别的 db_datareader、db_datawriter 和 MAYBE db_ddladmin 就足够了,尽管它可能需要在数据库上执行 GRANT EXECUTE。
如果你不能,那就再争论一些。书面。
如果您再次输了,请将 sa 密码更改为一个长而强的加密随机密码,以配合使用新密码更新的应用程序。
并确保该实例仅用于该应用程序,因此风险仅限于该区域。
首先,您是系统管理员,不是吗?您应该已经知道 sa 密码了!如果您输了两次,只需通过 ALTER LOGIN(如下)或 GUI 将另一个实例上的 sa 密码更改为相同的密码(或者,最好将它们都更改为更好的密码)。
其次,意识到该应用程序的每个用户都可以获得您的 SA 密码 - 他们几乎可以肯定地使用十六进制编辑器将其直接从应用程序中提取出来,查找字符串 pwd 或 pass(UCS-2“Unicode”或 ASCII)。
你有申请,对吧?请咨询您当地的安全管理员,看看您是否可以在十六进制编辑器中打开它并自己找到 sa 密码。
一般来说,如果你想移动相同的密码,你可以使用
ALTER LOGIN sa PASSWORD = 'hash string' HASHED
改变它。
不要经常这样做——如果有人得到了你所有密码的哈希值(就像你得到它们一样),最好每个人都有一个唯一的盐,所以攻击者必须花费更多的工作来测试许多盐,然后才能开始寻找密码。
不要从较低保护到较高保护执行此操作- SQL Server 2005、2008 和 2008R2 都使用相同的算法。SQL Server 2012 和 2014 使用相同。不要将 2005/8/8R2 哈希移动到 2012/14;它明显较弱(并且 2012/14 密码散列开始时很可悲)。
因此,最好将密码更改为您想要的明文密码,以便 SQL Server 生成新的盐。密码哈希非常弱,是 SHA-1 或 SHA-512 的单次迭代,因此它需要它所能获得的所有帮助。