在客户端计算机上保护客户端密码

时间:2015-03-13 18:13:09

标签: c# wcf security password-protection

使用ChannelFactory类或Generated Proxy访问WCF服务时,是否可以在客户端计算机上保护客户端密码?

注意:我不是在谈论通过网络时保护密码。相反,我问是否可以在客户端的计算机上保护密码,以便在用户通过客户端应用程序登录时,有人无法使用工具公开密码。

我认为这是一个不可能实现的目标。无论我如何从用户那里获取并保护密码 - 在ClientCredentials或代理对象上设置ChannelFactory时,密码都会暴露出来。

例如,在ClientCredentials对象上设置ChannelFactory时:

var myChannelFactory = new ChannelFactory<IMyService>(myBinding, myEndpoint);
myChannelFactory.Credentials.UserName.UserName = GetUserName();
// Password will be set on channel factory as a string
myChannelFactory.Credentials.UserName.Password = GetPassword();

只要ChannelFactory实例在内存中,如果某人拥有客户端计算机,则密码是不安全的。我知道加密可以被打破,并且将任何文件放到正确的手中意味着它可以被破坏。但是,我想看看我是否至少可以让某人为它工作 - 但这似乎是一个漏洞,限制了开发人员在物理访问客户端机器时可以做些什么来保护系统。

使用用户名/密码身份验证访问服务时,这只是生活中的事实吗?

1 个答案:

答案 0 :(得分:0)

如果您在客户端计算机上使用了密码哈希,然后将其与WCF服务上的哈希相匹配,该怎么办?这样你就可以存储和发送哈希值。

我也已经完成了存储哈希的地方,但是当我去使用它时,我会将它与DateTime.UtcNow.ToString(“DDHH”)(Day + Hour)结合起来并再次哈希。如果它在WCF方面无法匹配,我将使用之前和之后的小时重新检查。 see here for hashing.

相关问题