我正在使用提供商提供给我的密钥和密码来构建我的URL以进行API调用。
https://api.testurl.com/api/test/calldata?key=12345&secret=999999&query=hello
我的问题是,我正在追加“查询”。每次基于用户输入并使用'键进行呼叫。并且'秘密'每一次 - 对我而言,这似乎并不安全。每次拨打电话都不会泄密密钥吗?
public async Task<List<APIResult.Data>> ApiAsync()
{
using (var client = new HttpClient())
{
HttpResponseMessage response = await client.GetAsync(_apiUrlToCall);
if (!response.IsSuccessStatusCode) return null;
var result = await response.Content.ReadAsStringAsync();
var rootResult = JsonConvert.DeserializeObject<APIResult.Rootobject>
(result);
return rootResult.Data.ToList();
}
}
答案 0 :(得分:4)
通常,您会在HTTP标头中而不是在查询字符串中传递身份数据(在本例中为密钥和密钥)。这样它就不会被记录在任何地方(例如IIS日志,浏览器历史记录,谷歌,facebook 等跟踪器)。
如果您使用的是HTTPS,则应该阻止它在其他任何地方公开。
但是,因为HTTP是无状态,每次发出请求时都必须发送某种识别数据,无论是秘密密钥,Kerberos令牌,会话coookie,无论它是什么。
答案 1 :(得分:2)
你可以传递钥匙和钥匙作为Http标题的秘密。通常,对于rest api,授权Http Header是使用authtoken设置的。你可以这么类似。