作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我有一个 Asp.net Web API 项目。
项目通过接收名为sessionToken
的参数来验证所有请求
http://myapi.com/api/applications/getApplications?sessionToken=xxx
但是,我听说通过公共(public) URL 发送敏感参数是不安全的,而且我看到了 example我可以在 HttpClient
请求的 header 中添加 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();
}
我很高兴现在我可以读取参数而无需将其放入 url 中。
通过 http 请求 header 发送敏感数据是否安全? (当然至少会加密)
最佳答案
您说得对,将安全敏感信息放在 Url 上不是一个好主意。它可能导致信息泄露。
建议将其放在页眉中。以下是一些进一步的建议:
使用 Authorize header 而不是自定义 header 。 Authorize header 专为身份验证目的而设计。您可以定义自己的方案,也可以使用现有方案,如 bearer在 OAuth 2.0 中定义,而不是重新发明所有轮子。
客户端应始终使用 TLS 来防止 MITM攻击
客户端在发出请求时应始终检查证书链以避免 DNS hijacking攻击
将 token 的到期时间设置为短期以避免 replay攻击
确保您的客户端代码不会将 token 存储到不安全的地方,其他人可以访问这些地方
关于asp.net - 如何将敏感数据发送到 Asp.net Web API 服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16231135/
我是一名优秀的程序员,十分优秀!