[英]RESTful API call using C#
我正在使用提供者提供給我的密鑰和秘密來構建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();
}
}
通常,您會在HTTP標頭而不是在查詢字符串中傳遞身份數據(在本例中為您的密鑰和機密)。 這樣一來,它就不會在任何地方記錄日志(例如IIS日志,瀏覽器歷史記錄,被Google,facebook 等跟蹤器標記)。
如果您使用的是HTTPS,則應阻止它在其他任何地方公開。
但是可以,因為HTTP是無狀態的 ,所以每次發出請求時都必須發送某種識別數據,無論它是什么,都是秘密密鑰,Kerberos令牌,會話庫奇。
您可以將密鑰和秘密作為Http標頭傳遞。 通常對於rest api,使用authtoken設置Authorization Http Header。 您可以這樣做類似。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.