如何保护WPF项目中的连接字符串密码?

时间:2011-06-25 22:24:27

标签: .net wpf database wcf entity-framework

我正在开发一个客户端和服务器游戏应用程序。我正在使用Web服务(WCF)。这样,客户端应用程序不会存储数据库的密码。它改为访问Web服务,因此无法破解密码。但是现在,如果我可以使用Entity Framework,我认为我可以更快地发展。但是我很久以前就试过了,我读到WCF与EntityFramework不兼容,因为有些属性无法序列化。

所以我猜,如果我使用实体框架,我就无法拆分两个应用程序(客户端和服务器)。或者我可以吗?

如果我只开发一个应用程序(不在客户端/服务器中拆分),那么有没有安全的方法可以不被黑客入侵。此应用程序将连接到数据库,但它需要密码。但我认为我无法将密码存储在客户端使用的同一应用程序中。我该怎么办?

也许我的想法很困惑,抱歉。请帮我。感谢。

1 个答案:

答案 0 :(得分:5)

将连接字符串传递给客户端时,没有真正的方法来保护密码。即使您以某种方式加密它,您的应用程序仍然需要加密密钥来解密连接字符串/密码,以便用户能够搜索该密钥(反汇编)并解密它。将连接字符串传递给客户端后,您将授予他对数据库的权限。因此,你必须给他用户名和密码,这将允许他只进行允许的查询和更改 - 这在分发游戏时几乎不可能,因为这需要为每个客户端单独进行唯一登录,并且整个数据访问必须通过存储过程完成。您永远不应该将数据库暴露给公共(没有数据库管理员会允许这样做)。您需要客户端/服务器。

  

我读到WCF与EntityFramework

不兼容

展示您所读到的真正问题或您真正遇到的实际问题。

WCF可以与Entity框架一起使用。甚至有WCF数据服务将实体框架模型公开为REST OData服务。常见的WCF服务与EF有关的唯一问题是延迟加载应该关闭和序列化,你必须处理循环引用或使用数据传输对象而不是真实实体。