[英]How to secure my REST-API?
我有一個帶有node.js和express.js的api構建。 現在我有一個不安全的api,任何人都可以獲取,發布,刪除,刪除記錄。
我正面臨以下問題。 我的其他api不應該驗證用戶而是應用程序。 例如,我的移動應用程序應該有一個有效的令牌來訪問api。 Web應用程序也是如此。
另一個用戶案例:我的api將被另一個只使用一次休息呼叫的應用程序使用。 所以代碼中的某個地方我不知道在一個應用程序中我不知道(大多數情況下)我的api上的休息調用將被觸發。 如何保護此類訪問權限,因為不涉及cookie或會話?
我的第一個想法是,創建一個用戶和一個密碼。 每個api調用(通過https)必須包含憑據。 密碼可能會被散列。 但我讀了這個
用戶名和密碼,會話令牌和API密鑰不應出現在URL中,因為這可以在Web服務器日志中捕獲並使其具有內在價值。
來自https://www.owasp.org/index.php/REST_Security_Cheat_Sheet
有什么建議嗎? 我讀到了oauth,但這涉及重定向,我無法想象這將如何適用於移動應用程序,例如在Android上。
有一個問題,應用程序如何首先知道用戶名/密碼,但如果你對一般的想法(這是安全的,只要你考慮運行應用程序的環境是安全的),那么您不必擔心URL中的用戶名/密碼:只需使用https而不是https。
https已加密,因此只有2個端點(客戶端和您的API)甚至可以讀取URL。 中間的任何路由器/代理/服務器只能看到加密數據,無法訪問您的用戶名/密碼。
而不是用戶名/密碼,順便說一句,只需使用“訪問令牌”,這是一個很長的(讀取:難以猜測)字符串,並為每個應用程序分配一個訪問令牌。 最后,您將有效令牌列表保留在數據庫中,並對其進行身份驗證。 如果您願意,您甚至可以將過期日期附加到這些字符串。
將訪問令牌添加為https:// url的一部分是常見做法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.