首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >到C#服务器的SQL应用安全连接

到C#服务器的SQL应用安全连接
EN

Stack Overflow用户
提问于 2014-04-04 04:12:26
回答 2查看 302关注 0票数 1

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

提前谢谢你,

布拉德

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

EN

回答 2

Stack Overflow用户

发布于 2014-04-04 04:23:34

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

它是相当安全的,如果你的站点被SSL包裹起来,那就更安全了。避免标准的SQL身份验证,它是基于文本的,不应该被真正考虑。

在代码方面,您可能希望在数据库和网站之间建立一个层来完成所有繁重的任务。这在某种程度上混淆了你的网站所做的事情,因为它正在召唤你的中间人,而他处理所有真正的事务。

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

票数 0
EN

Stack Overflow用户

发布于 2014-04-04 04:42:37

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

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

  • 将数据库的网络端口仅开放到web服务器(您只能从web服务器ip访问数据库)
  • 使用集成身份验证(任何人都无法将您的数据库嗅探到存储过程中您的业务逻辑(您将对数据库的访问限制为仅用于web应用程序范围所需的功能)

然而,尤其是存储过程部分可能会很痛苦(当涉及到存储过程时,像EF、LinqToSQL或nHibernate这样的对象关系管理非常糟糕)。此外,这种方法也不能保证没有人能够看到从数据库服务器到web服务器的数据)。

如果在webserver和db服务器之间嗅探数据可能是一个问题,那么您必须编写用于访问数据的webservice。此best服务应该位于数据库服务器的可信网络上(尽可能接近数据库-相同的盒子是最好的)。web服务器应通过https调用此web服务(因此在web服务器和web服务之间嗅探数据是不可能的),并使用身份验证来访问web服务(建议使用windows身份验证)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22848020

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档