2013-04-26 151 views
3

我有一个Asp.net Web API项目。如何将敏感数据发送到Asp.net Web API服务器

该项目通过接收命名为sessionToken

http://myapi.com/api/applications/getApplications?sessionToken=xxx

参数但是验证所有的请求,我听说是不是安全通过公共URL发送敏感的参数,和我见过的example哪里我可以添加HttpClient请求的报头内sessionToken参数:

using (HttpClient client = new HttpClient()) 
{ 
    client.BaseAddress = new Uri("http://myapi.com/"); 
    client.DefaultRequestHeaders.Add("sessionToken", "xxx"); 

    HttpResponseMessage response = await client.GetAsync("api/applications/getApplications"); 
    string stringResponse = await response.Content.ReadAsStringAsync(); 
} 

我很高兴,现在我可以读取参数与不得不把它放在网址中。

通过http请求头发送敏感数据安全吗? (当然它们至少会被加密)

回答

1

你说得对,把安全敏感信息放在Url上不是一个好主意。它可以导致信息泄露。

推荐使用它。这里有一些进一步的建议:

  • 使用Authorize标题而不是自定义标题。授权标头旨在用于验证目的。您可以定义自己的方案,也可以使用现有方案,如OAuth 2.0中定义的bearer,而不是重新创建所有车轮。

  • 客户应该使用TLS从MITM攻击

  • 客户应经常检查证书链进行请求时,以保护以避免DNS hijacking攻击令牌

  • 集届满时短暂避免replay攻击

  • 请确保您的客户端代码不会将令牌存储到不安全的地方,这可能会被他人访问

+0

谢谢你..我会研究他们每个人,看看我怎样才能妥善保卫......到处都是危险! – Catalin 2013-04-30 06:18:11

1

除非连接被加密,否则我认为在url或header中发送任何敏感信息都不是一个好主意。如果你仍想通过不安全的http发送它,请使用一些可加密数据的公钥/私钥加密。我已经构建了一个应用程序,其中的url包含一些短时间内有效的加密数据(例如2分钟)。

相关问题