在C#应用程序中保护数据层

Fil*_*erg 12 c# architecture security

我正在考虑如何在C#应用程序中保护数据层,在这种情况下,该层可以是与应用程序本身一起存储的LINQ to SQL模型图,其中包含连接字符串到SQL Server数据库.

或者它可以是应用程序和Web服务之间的连接.

要么你需要强制某种安全性,例如,应用程序中的连接字符串可以很容易地进行逆向工程,并且可以很容易地跟踪和使用Web服务,这是出于应用程序原始目的之外的其他原因.

所以我的问题是更简短的方法:在处理Web服务和/或从Windows窗体应用程序直接连接到SQL Server时,如何解决安全问题?

Shi*_*iji 14

在您的情况下,有两种主要的攻击可能性:

  • 窃取连接字符串,然后直接访问数据库
  • 不使用UI直接调用C#代码中的方法

对于连接字符串,您需要将其以加密形式存储在配置文件中.问题是winforms应用程序中需要有足够的信息才能解密和使用它.

要直接访问代码,您可以使用代码访问安全性和模糊处理.

在您的情况下,我不会让Windows应用程序直接访问数据库.让windows app调用WCF服务,WCF服务将访问数据库.

允许用户的用户帐户调用WCF服务,WCF服务在允许访问数据库的帐户下运行,用户的用户帐户对数据库没有权限.

具有3层的Windows应用程序:

  • UI
  • 业务(安全检查应向用户显示哪些UI)
  • 代理

具有2层的WCF服务:

  • Facade/Business Layer(用户可以使用此数据调用此方法进行安全检查)
  • 实体框架数据模型

两个层的常见dll

  • 合同/ WCF接口
  • 数据传输对象

有关代理,合同和DTO的信息,请参阅此视频:

http://www.dnrtv.com/default.aspx?showNum=103