我已经开发了一个.Net 3.5 windows窗体应用程序。我还想设计一个网站,有多个Webmethods来查询主机上的数据库的网络服务。我希望and服务只通过我的winapp和我的网站调用!我不希望任何其他人能够调用和使用我的who服务,只希望一些人能够访问我开发的windows应用程序。
我需要一个很好的安全场景!我真的很感谢任何可以帮助我的人,因为这是我第一次开发who服务,我真的需要它像我提到的那样安全!
发布于 2012-08-16 05:27:50
由于几个原因,您正在讨论的内容将很难做到,但主要是:
如果您在WinForms应用程序的代码中添加了任何内容,则可以非常轻松地对其进行反编译。您可以随意混淆代码,但可以对其进行反编译。
正因为如此,你应用程序中的任何代码都可以被任何有权访问代码的人读取。您应该始终将任何WinForms应用程序视为完全被攻破,并确保服务器端的安全性得到补偿。
因此,您不能简单地将用户名和密码存储在配置文件或代码中。你得想出别的办法。您可以使用身份验证,并在程序启动时提示用户输入用户名/密码并使用该用户名/密码。然而,人们倾向于分享这些东西,所以你可能想要额外的保护。
您可以将连接信息或秘密放入app.config中并对其进行加密,但任何可以反编译代码的人都可以重新编译它,并随意添加代码来解密它。
您可以为您的应用程序提供签名密钥,并在身份验证机制中使用它,但这是可以绕过的。
您可以将您的IP地址限制为特定的IP地址,但这些地址是可以欺骗的。
然而,...
通过将上述所有技术分层,可以使攻击者很难绕过您的预防措施。我们在其中一个有类似要求的应用程序中执行了以下操作:
我们设置了一个数据库,其中包含每个授权客户的GUID记录,该customer.
- If it matches, valid data is returned.
- If it fails, _**valid looking**_ data is returned. We actually return what looks like good data, but it's really not. This makes it harder for an attacker to know if they've actually broken through the defenses.
分层防御,希望能阻止普通攻击者。
微软也有一些指导原则:http://msdn.microsoft.com/en-us/library/ff648643.aspx
https://stackoverflow.com/questions/11977336
复制相似问题