使用WCF数据服务时,更具体地说,在c#中的DevExtreme的WCF Odata服务中,是否有任何加密URL查询的方法?我不希望客户端能够查看/修改URL以访问数据。我想知道这种隐蔽程度是否可用,即使对客户端进行身份验证,并且客户端只有一个ID的权限。
例如:
/AcountsByIntroducerID?entityID=1234
此URL公开ID,并允许客户更改ID号。在WCF中是否有任何方法可以使用将上述URL转换为加密字符串?
例如:/JDudfj8ddJFDJSLAFDLJuaeouru0
所以这可以在服务器端解密。谢谢!
答案 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应用程序,并使用逆系统
编码参数