【问题标题】:Passing private data through a WCF OperationContract method?通过 WCF OperationContract 方法传递私有数据?
【发布时间】:2011-04-18 15:15:01
【问题描述】:

假设我的 WCF 服务实现中有一个名为 Login 的方法,它的定义如下:

[OperationContract]
[WebGet(UriTemplate="login/{username}/{password}")]
bool Login(string username, string password);

显然,传递http://localhost:80/login/user1/pass1 之类的东西不是很安全,那么在 wcf 休息场景中通常如何处理呢?

【问题讨论】:

  • 使用 SSL 保护您的通信,例如使用 https:// 作为您的 URL 的
  • @marc_c:这是 Ajax 场景。从 JS 调用此值并以纯文本形式传递这些值。您如何仅为该呼叫切换到 SSL?如果它不是 JS,那么 POST 方法将在普通 Http 中解决问题。

标签: c# wcf wcf-rest


【解决方案1】:

另一种选择是进行一些客户端加密,其中用户和密码通过 javascript 加密,转换为 base64,然后调用您在代码中显示的方式。

这显然不太安全,因为如果攻击者知道您是如何进行加密的(通过检查您的 javascript 代码),那么他就可以破解您的加密。但这与 SSL 结合使用可能是一个可行的解决方案,具体取决于您网站的敏感性。

【讨论】:

    【解决方案2】:

    一种选择是将整个网站作为 SSL 运行。

    您提到的另一个是在 POST 中发送用户名和密码。

    是否有强制要求您在 JS 中执行此操作?

    【讨论】:

    • WCF 对我来说有点陌生。基本上,我需要一个 android 应用程序来通过 app.com/user/pass 登录到应用程序,但我不想向用户显示或至少传递纯文本。您能否通过在 POST 中发送用户名和密码来阐明(显示示例)您的意思?这是否意味着我必须有两种方法,一个 POST(发送用户并通过)和一个 GET(获取成功登录或失败登录等值),或者我也可以使用 POST 检索成功和失败消息。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-12
    • 2015-07-24
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    相关资源
    最近更新 更多