我正在开发.net Winforms应用程序,我需要保护与sql server 2008数据库的连接。我打算创建一个Web服务作为中间层,它将处理身份验证并提供数据操作。还有更好的方法吗? .net是否有相应的组件或工具?什么是最好的技术? 任何信息将不胜感激,谢谢。
答案 0 :(得分:4)
定义“安全”。显然,您希望限制对真正需要该数据的用户的数据访问。但是,需要有关架构的更多信息;这是一个内部应用程序,只能在(安全)局域网,VPN或托管环境中使用?或者,这是一个在您无法控制的计算机上使用的应用程序,它将通过Internet传输数据?您需要多少安全性取决于将使用该软件的用户类型,数据的位置和敏感程度。
MSS内置了相当不错的安全性。您可以将SQL用户绑定到Windows域帐户,您可以基于用户或角色等以多种方式限制“安全性”(表,视图,SP等)。我首先会看看这些功能,并认真考虑利用在你的安全计划中。一个SQL用户被定义为由特定软件的任何用户使用,该软件具有执行软件可能需要的任何权限,是简单,常见且高度不安全的。
如果这还不够好,或者你想完全抽象你的数据层(例如,如果你需要软件能够指向从MSS到Oracle到MySql的任何数据库类型),那么它可能是一个使用服务代理实现Repository模型的好主意。和Brian一样,我鼓励你看看WCF。 WCF服务是高度可配置的,可以提供独立的身份验证和加密。精心设计的WCF服务确实非常安全。
在服务的后面,您可以实现一个Repository模式,该模式抽象了如何从数据存储中检索数据的详细信息,并公开了以即用形式返回包含所需数据的对象的简单方法。现在,您的服务方法只会将1:1映射到Repository方法,可能会转换为DataContract可序列化对象,而不是服务两端可用的更丰富的域模型。
答案 1 :(得分:2)
您是否考虑过使用WCF构建服务层? WCF可以从实际的物理数据库中带来全新的抽象和安全层。
通过内置日志记录,WCF还允许您使用比传统Web服务更安全的绑定。
此外,如果您想要对.NET安全性有一个非常好的阅读,请查阅本书: