二汗——
您的主要安全目标不是保护您的源代码,而是保护您的客户数据。 为此,您必须确保 A) 您的通信是安全的 (SSL) b) 您的代码实现了适当的安全性(不受 SQL 注入攻击)和 c) 您的数据库是安全的。
对于 (A) - 通信安全 - 您需要从Thawte之类的人那里获得 SSL 证书(这是我们使用的人,我喜欢他们)。当您在服务器上安装证书时,您需要确保网站只接受安全 (SSL) 连接 - 至少对于包含敏感数据的所有页面。例如,所有包含信用卡数据的表格都必须通过 SSL 提交。
对于 (B) - 代码安全性 - 这值得一整本书!例如,您不能仅通过附加从网页收集的表单/请求数据来构造 SQL 调用(这会使您面临SQL 注入攻击)。 所有SQL 参数都必须参数化。等等等等。没有人可以在 SO 帖子中解释安全性 - 你有很多东西要学。
对于 (C) - SQL Server 安全性 - 这也是一个复杂的主题,但有几个关键点。根据您的描述,我假设 SQL Server 与您的 Web 应用程序在同一台服务器上运行。这意味着您不希望它接受任何来自网络的连接。不要试图让它保持打开状态,以便您可以从桌面上的 SQL Management Studio 轻松访问它……这只是可怕的、愚蠢的安全做法。登录远程服务器后,您可以通过远程桌面访问它。此外,禁用“sa”帐户 - 立即执行。在端口 1433 上找到您的人(如果您不禁用所有网络访问)将每分钟每秒对 sa 帐户进行暴力密码猜测,等等。多年。我们每天在为少数客户维护的非网站数据库上获得大约 17,000 个数据。这里还有更多要学习的东西,但如果你采取这两个步骤,你就会很好地覆盖。不过,可以肯定的是,我建议您也运行 MS 安全表面分析工具并遵循它的建议,
至于虚拟机托管,应该没问题。然而, MaximumASP的专用主机每月仅运行约 199 美元(我使用、推荐和认为是业内最好的!)。我建议您考虑使用自己的专用服务器,以便在证明成功的情况下轻松扩展业务。
对于您的数据库,SQL Server Express 将适用于此,是的,您将来可以升级到 Workgroup Edition。除非您实际达到这些限制,否则数据库限制不会对您的网站造成瓶颈。你需要弄清楚这是否可能。话虽如此,确实不建议尝试在免费版本的 MS 数据库上运行专业网站——尤其是一个持有财务数据的网站。无论取得任何成功,您都可能会突破这些限制。许多网络托管公司(尤其是MaximumASP)将允许您以最低价格(例如每月25 美元或类似的价格)在您的服务器价格中添加专业版本的SQL Server。
最后,您似乎对 Web 应用程序与 Windows 应用程序有点混淆。在 Web 应用程序中,您的用户将无法访问您的源代码/DLL(IIS 阻止访问各种文件,包括 dll 和 .config 文件)。他们不会下载和安装应用程序,因此您无需对代码进行签名,也无需进行混淆处理。在这种情况下,“反射器保护”对我来说甚至没有意义。
如果您担心托管公司会看到您的代码,您应该找一家不同的托管公司。话虽这么说,我只是无法想象任何有信誉的托管公司真的关心看到你的源代码。
祝你好运!