【问题标题】:How to protect the connection string password in a WPF project?如何保护 WPF 项目中的连接字符串密码?
【发布时间】:2011-09-22 18:42:06
【问题描述】:

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

所以我想,如果我使用实体框架,我不能分成两个应用程序(客户端和服务器)。或者我可以吗?

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

也许我的想法很混乱,对不起。请帮我。谢谢。

【问题讨论】:

  • 您可以将实体包装在可以序列化的东西中。您也不能在客户端计算机上隐藏密码。他们会找到它,解密它,然后破解你。
  • 是的,谢谢您的信息。我认为,如果我包装我的实体,我将不得不在某个地方映射所有方法。这将花费很多时间=x
  • 是的,确保您的软件安全有时会花费时间。这让你感到意外吗?
  • 是的,您可能必须将方法映射到 Web 服务调用。
  • WCF 与 EntityFramework 不兼容 - 抱歉,这完全是废话 - 您可能需要调整 EF 类,或提供您自己的 DTO(数据传输对象)类 -但这样笼统的说法是完全错误的......

标签: .net wpf database wcf entity-framework


【解决方案1】:

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

我读到 WCF 与 EntityFramework 不兼容

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-10-20
    • 2019-08-29
    • 1970-01-01
    • 2013-08-30
    • 2023-03-13
    • 1970-01-01
    • 2017-10-25
    • 2011-02-09
    相关资源
    最近更新 更多