【问题标题】:Encrypting URL for WCF Service加密 WCF 服务的 URL
【发布时间】:2013-09-25 18:49:49
【问题描述】:

在使用 WCF 数据服务时,更具体地说,在 c# 中 DevExtreme 的 WCF Odata 服务中,有没有加密 URL 查询的方法?我不希望客户端能够查看/修改 URL 以访问数据。我想知道这种模糊级别是否可用,即使对客户端进行了身份验证并且客户端只有一个 ID 的权限。

例如:

/AcountsByIntroducerID?entityID=1234

此 URL 公开 ID,还允许客户端更改 ID 号。 WCF 中是否有任何方法可以将上述 URL 转换为加密字符串?

如:/JDudfj8ddJFDJSLAFDLJuaeouru0

所以这可以在服务器端解密。谢谢!

【问题讨论】:

  • 如果客户端(希望已通过身份验证进入该系统)对entityID 处的项目拥有权限,并且仅在他们这样做时才显示数据,您就不能检查服务器端吗?通过默默无闻的安全性不是达到目的的手段。
  • 是的,你说得很好。我会记住这一点,但是我仍然想知道即使在客户端必须经过身份验证并且仅对他/她的 id 服务器端具有权限的情况下,这种模糊性是否可能。
  • @Jaiesh_bhai:但是,这解释了编码而不是加密。他们都是不同的,对吗? OP 已要求加密。但是,上面的答案谈到编码含义仍然是数据传输不安全吗?
  • Encrypt IDs in URL variables 的可能重复项

标签: c# wcf url encryption devexpress


【解决方案1】:

我有一个类似的问题要解决。为了解决它,我使用了以下模式 我在一个 base 64 字符串中编码了 url 参数。

用一个参数声明你的 WCF

[ServiceContract]
public interface VCIWCFService
{
     [OperationContract]
     [WebGet(UriTemplate = "/{encodedParameters}")]
     string GetSomething();
}

在后端代码中,您可以使用以下代码对编码参数进行解码

  string Url  = HttpUtility.UrlDecode(encodedParameters);
  Url = Convert.FromBase64String(Url );

您可以通过 HttpUtility 类获取特定参数:

Uri myUri = new Uri(string.format("http://www.nothing.com?{0}",Url));
string param1 = HttpUtility.ParseQueryString(myUri.Query).Get("param1");

我使用 Objective-C Ipad 应用程序,并使用逆系统对参数进行编码

【讨论】:

  • 嗨@tdelepine 感谢您的回复。如果您不介意,您能否详细说明一下我将在客户端如何以及在何处实现 UriTemplate?谢谢
  • 我编辑我的答案 UriTemplate is in WCF declaration Backend-side
  • @tdelepine 但是,这解释了encoding 而不是encrypting。他们都是不同的,对吗? OP 已要求encrypt。但是,上面的答案谈到encoding 意味着数据传输仍然是不安全的吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多