C# Web App 与 SQL Server 的安全连接

本文关键字:安全 连接 Server SQL Web App | 更新日期: 2023-09-27 17:56:25

我想知道与SQL Server建立安全连接的最佳方法是什么? 这是我的场景。 在我的工作中,我们有SQL Server 2012 Standard。 我的老板希望我使用 TDE 创建一个新数据库。 我发现您必须拥有企业版才能使用 TDE。 我们调查了一下,它会花费一大笔钱,所以我们不打算购买企业版。 所以我在考虑使用存储过程与数据库进行交互。 这比通过 Web 提交 SQL 查询更安全吗? 另外,与 Web 应用程序/DB 服务器进行通信和传输数据的最佳安全措施是什么?

提前感谢,

曲头钉

编辑:另外,是否有办法在连接字符串中安全地发送用户名/密码凭据?

C# Web App 与 SQL Server 的安全连接

从某种意义上说,存储过程会更安全,因为您只需将对象提交到过程中即可生成所需的结果。这将掩盖底层 SQL 语句,因此可以认为它更安全。我认为大多数地方都依赖于域环境中SQL的Windows身份验证方面。

它是相当安全的,如果您的网站被包裹在SSL中,则更是如此。避免使用标准的SQL身份验证,它是基于文本的,实际上不应该考虑。

代码方面,您可能希望在数据库和网站之间有一个层来完成所有繁重的工作。这有点混淆了您的网站正在做什么,因为它正在呼叫您的中间人,并且他处理所有真正的交易性事情。

另外,用户将如何与您的网站互动?是否需要他们先登录,什么机制将控制这一点?在真正考虑哪种方法是安全性和可用性的最佳平衡之前,还有很多其他的设计细节需要弄清楚。我会选择WindowsAuth/SSL并使用安全帐户来执行所有交易。它很容易设置,AFAIK不容易破解。

这是两件不同的事情 - TDE 将帮助您加密文件系统上的数据(因此,如果我可以访问您拥有数据库的文件系统,如果您使用 TDE,我将无法读取它)。

应用程序和数据库之间的通信是不同的问题。您可以执行以下几项操作:

  • 仅向 Web 服务器打开数据库的网络端口(只能从 Web 服务器 IP 访问数据库)
  • 使用集成身份验证(没有人可以嗅探您的密码)
  • 将业务逻辑嵌入到存储过程中(您将对数据库的访问限制为仅满足 Web 应用程序范围所需的功能)
然而,特别是存储过程

部分可能会很痛苦(ORM如EF,LinqToSQL或nHibernate在存储过程方面非常糟糕)。而且这种方法也不能保证没有人能够看到从数据库服务器到Web服务器的数据)。

如果在 Web 服务器和数据库服务器之间嗅探数据可能是一个问题,则必须编写用于访问数据的 Web 服务。此 Web 服务应该位于受信任的网络上到数据库服务器(尽可能接近 db - 同一个框是最好的)。Web服务器应通过https调用此Web服务(因此不可能在Web服务器和Web服务之间嗅探数据)并使用身份验证来访问Web服务(建议使用Windows身份验证)。