打印我的sa密码

Print my sa password

我已经使用注册的 "sa" sql 帐户登录到我的 sql 服务器,并且 我想打印(而不是更改)我当前的密码。我可以更改它,但我有一个使用当前密码的应用程序。

我完成了

select * from sys.sql_logins where name ='sa'

但它给了我一个哈希密码

如果不可能,如何将我的 sa 连接导出到另一个 sql 服务器实例?


警告 - 可怕的做法

更改您的应用程序以使用 sa 以外的用户,并且最好没有系统管理员权限。通常数据库级别 db_datareader、db_datawriter 和 MAYBE db_ddladmin 就足够了,尽管它可能需要对数据库执行 GRANT EXECUTE。

不行就再吵一架。书面形式。

如果您再次输了,请将 sa 密码更改为一个长的、强的、加密随机的密码,以配合使用新密码更新的应用程序。

并确保该实例仅用于该应用程序,因此风险仅限于该区域。


恢复当前sa密码

首先,您是系统管理员,对吗?您应该已经知道 sa 密码了!如果你丢失了两次,只需将另一个实例上的 sa 密码更改为相同的密码(或者,更好的是,将它们都更改为更好的密码),通过 ALTER LOGIN(如下)或 GUI。

其次,意识到该应用程序的每个用户都可以获得您的 SA 密码 - 他们几乎可以肯定地使用十六进制编辑器将其直接从应用程序中提取出来,寻找字符串 pwd 或 pass(UCS-2 "Unicode" 或 ASCII).

你有应用程序,对吧?请咨询您当地的安全管理员,看看是否允许您在 hex editor 中打开它并自己找到 sa 密码。


移动sa密码

一般来说,如果要移动相同的密码,可以使用

ALTER LOGIN sa 密码 = 'hash string' HASHED

改变它。

不要经常这样做 - 如果有人得到你所有密码的散列值(就像你得到它们一样),最好每个密码都有一个独特的盐,所以攻击者在开始寻找密码之前必须花费更多的时间来测试许多盐。

不要这样从低防护到高防护 - SQL Server 2005、2008、2008R2都使用相同的算法。 SQL Server 2012 和 2014 使用相同。不要将 2005/8/8R2 哈希移动到 2012/14;它明显较弱(而且 2012/14 密码散列从一开始就很可怜)。

因此,您最好将密码更改为您想要的明文形式,这样 SQL 服务器会生成一个新的盐。密码散列非常弱,是 SHA-1 或 SHA-512 的单次迭代,因此它需要它所能获得的所有帮助。