我们正在脱离我们典型的原生应用程序开发,正在开发一些新的基于 Web 的应用程序服务。我们正在使用 .Net 和 WCF,并且很可能托管在 IIS 上。
我们的服务需要使用数据库来持久化数据。在所有情况下,我们都打算使数据库服务器与我们的主机不同。我们发现的大多数资源似乎表明将数据库连接字符串存储在 web.config(或用于自托管的 app.config 文件)中。我们担心的是,由于该服务是面向网络的,因此它运行的盒子更有可能被黑客入侵/妥协。如果发生这种情况,攻击者现在拥有了数据库连接字符串,并且可以完全访问所有数据。
最初的想法是让 WCF 服务简单地代理到位于另一台机器上的服务器应用程序,该机器保存连接信息并执行所有处理逻辑。这样,如果网络主机被入侵,他们将不得不弄清楚如何与我们的服务器应用程序通信,或者也破坏该机器,以获得数据库访问权限。尽管我们确实担心代理的性能成本,并且可能会在服务器应用程序中遇到瓶颈。
与这种方法有关的问题是,我们在 WCF/IIS 文献中没有找到太多推荐这种方法的方式,但我们可能只是不知道为了找到此类信息而调用什么。问题:这样的代理是一种好的做法吗?为什么/(为什么不)(或者我在哪里可以找到关于这个主题的更多信息),还是有更好的做法?