Wpf 客户端WinForms/WFP应用程序中的.NET实体框架:安全问题?

Wpf 客户端WinForms/WFP应用程序中的.NET实体框架:安全问题?,wpf,winforms,security,entity-framework,Wpf,Winforms,Security,Entity Framework,我的团队正在考虑使用最新版本的Entity Framework和WinForm或WPF应用程序,这些应用程序将由用户下载并安装在他们的机器上 这将通过WCF连接到我们的数据库,应用程序将通过EF使用LINQ查询与数据库交互 这安全吗?应用程序是否可以进行反向工程,竞争对手是否可以看到我们的数据库结构和业务规则 这种架构可以接受吗?或者,如果风险很高,是否应该将结构抽象到接口后面?我想这在一定程度上取决于WCF服务的工作方式。Web服务还是Windows服务?加密?如果您没有加密,并且正在以XML

我的团队正在考虑使用最新版本的Entity Framework和WinForm或WPF应用程序,这些应用程序将由用户下载并安装在他们的机器上

这将通过WCF连接到我们的数据库,应用程序将通过EF使用LINQ查询与数据库交互

这安全吗?应用程序是否可以进行反向工程,竞争对手是否可以看到我们的数据库结构和业务规则


这种架构可以接受吗?或者,如果风险很高,是否应该将结构抽象到接口后面?

我想这在一定程度上取决于WCF服务的工作方式。Web服务还是Windows服务?加密?如果您没有加密,并且正在以XML序列化返回的对象,则可能有人会窥探该XML流,并了解实体的结构(非常确定序列化实体中不包含映射信息或存储层信息)


就实体框架而言,假设攻击者无法访问edmx或生成的EDM组成文件,并且他们无法直接访问数据库,那么您应该很好。实体框架EDMs的编译非常类似于其他程序集。只要您确保从服务到客户机的传输安全,您就应该很好。

这不是一个完整的答案,所以我不会将其作为一个完整的答案发布,但在这种情况下(不想公开业务规则/数据库结构),我的偏好是将所有逻辑抽象到WCF服务。如果您不想看到任何内容,请转到公开适当端点和操作的服务。我的工作基础是,如果该应用程序可供公众/客户使用,则该应用程序中的代码是给定的。-不一定正确,但在涉及代码/结构安全性时,这是一个足够好的经验法则