加密WCF服务的URL

时间:2013-09-25 18:49:50

标签: c# wcf url encryption devexpress

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

例如:

/AcountsByIntroducerID?entityID=1234

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

例如:/JDudfj8ddJFDJSLAFDLJuaeouru0

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

1 个答案:

答案 0 :(得分:2)

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

使用一个参数声明您的WCF

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

在后端代码中,您可以使用以下代码解码encodedParameters

  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应用程序,并使用逆系统

编码参数