簡體   English   中英

在 Ionic4/Angular 項目中安全地存儲 API 密鑰的位置

[英]Where to securely store API keys in Ionic4/Angular project

我覺得我在這里問了錯誤類型的問題,因為它在 30 秒內無法搜索。 請告訴我。

無論如何,我的environment.tsenvironment.prod.ts都設置了后端和第三方服務的 url 和 api 密鑰。 但是我讀到將 API 密鑰保留在那里是不安全的做法。 我應該把它們放在哪里? 如果它確實在其他地方,那么最簡單的方法是什么?

如果我正確理解了您的問題,那么您將在這里查看兩個潛在的關鍵誤用點:

  1. 開發人員可能會在開發您的應用程序時意外使用生產密鑰 - 通過將您的密鑰存儲在您的 CI 管道中(假設您有一個)並將正確的秘密注入到正確的環境配置中,這很容易解決。 一些可能感興趣的工具: OctopusHashicorp Vault 然后,開發人員將只在他們的代碼庫中擁有開發密鑰。 請記住 - 如果您正在使用版本控制系統 - 僅僅刪除您的生產代碼並添加新的提交是不夠的 - 有一些工具可以讓您搜索您的提交歷史以查找意外暴露的秘密,因此您將擁有改變你的鑰匙

  2. 用戶可以對您的應用進行逆向工程並從代碼中提取密鑰。 這個問題更難解決,因為它在很大程度上取決於操作系統、版本以及您如何處理機密。 通常,您希望完全避免在您的應用程序中存儲機密,而是在對用戶進行身份驗證時獲取它們。 之后 - 您將利用目標操作系統安全本地存儲功能(請記住,即使這樣也不能保證 100% 保護)。 對於 3rd 方訪問,請考慮通過您的服務器代理請求以隱藏密鑰這里可以找到更多靈感

UPD澄清您對用戶交互的擔憂,請考慮以下簡化的工作流程:

1) 用戶向您的后端/authorise端點發出未經身份驗證的請求,該請求將檢查用戶名、密碼並返回token1 (最好是JWT

2) 您的應用程序將此令牌 1存儲在設備的本地存儲中 - 這是用戶將有權訪問的唯一秘密,並且特定於該用戶

3) 您的用戶使用token1向您的/3rd-party-api-proxy發出經過身份驗證的請求

4) 您的服務器將驗證步驟 3 中的token1 ,並使用您從未公開過的token2向第 3 方發出實際請求。

5) 您的第 3 方請求成功,您將數據返回給用戶。

使用此流程,您的token2永遠不會暴露,並且您始終知道哪個用戶請求訪問 3rd 方 API(您可以添加日志記錄、審計等)。 互聯網上有很多關於如何架構這個東西的文章,我在這里只是概述了非常基本的概念,希望這能給您一些思考。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM