![仅允许某些进程连接到 MS SQL](https://linux22.com/image/514718/%E4%BB%85%E5%85%81%E8%AE%B8%E6%9F%90%E4%BA%9B%E8%BF%9B%E7%A8%8B%E8%BF%9E%E6%8E%A5%E5%88%B0%20MS%20SQL.png)
我丢失了一个非常老的应用程序的源代码,该应用程序连接到 MS SQL 服务器以进行一些 SQL 查询。由于登录信息在应用程序中是硬编码的,我无法在服务器上更改用户名/密码。总有一天,用户可能会知道密码,我们肯定需要更改它。但该如何更改呢?
一个想法是只允许旧应用程序在 SQL 服务器上执行查询并阻止任何其他应用程序(如查询分析器等)。我可以以某种方式设置进程权限吗?
- SQL 服务器 (MS SQL 2005) 和应用程序 (C++) 位于同一台机器上
- 重写旧程序的成本太高
感谢帮助!
答案1
你真的不能这样做,AFIAK。你可以用 Windows 防火墙阻止 SQL 端口,这样只有运行应用程序的计算机才能连接到 SQL,也就是你说的 SQL 服务器本身。当然,这会破坏你使用不在 SQL 服务器上运行的 SQL 进行连接的一切。
您是说用户也登录了 SQL 服务器(因此能够在本地运行查询分析器),还是他们始终在远程?如果是前者,那您就倒霉了。而且您允许用户登录 SQL 服务器本身到底是为了什么?:-)
你能尝试使用十六进制编辑器在 EXE 中查找密码并替换它吗?如果它是编码的,即使你丢失了源代码,你也必须记得用什么算法来编码它?
您肯定已经学到了两个惨痛的教训。不要硬编码密码,不要丢失未备份的内容。您还有其他未备份的重要内容吗?您可能需要审核您的备份和恢复或 DR 流程。或者,如果您没有,请写一些。