想像這樣的場景:您的客戶希望您在您為他們設定的登陸頁面上實現對外部 API 的呼叫。外部API基於合約和透過該合約獲得的API金鑰來運作;因此,您不得在fetch()
前端呼叫中公開 API 金鑰。
因此,您現在有權實現一個充當中間伺服器的 Docker 實例,將您的 LPfetch()
呼叫連接到外部 API,這樣,對於每個請求,您都會有以下流量:
client --> Docker container --> API --> Docker container --> client
為了仍然保持嚴格的安全性,我現在想知道對從客戶端傳入 Docker 容器的請求進行身份驗證的最佳方法。授權是透過 CSRF 令牌實現的,這些令牌在頁面載入時傳遞給客戶端;成功發布初始身份驗證。
鑑於登陸頁面沒有登入系統,且我們不能依賴非 HTTP/第三方 cookie,我想到只允許來自已部署登陸頁面網域的請求進入 Docker 容器;但我不知道 A)這是否可能(我想到了Acces-Control-Allow-Origin
Docker 容器上的配置?),以及 B)這是否安全?我特別想知道 B),因為很容易偽造像引用頭這樣的東西,所以我想知道請求來源的網域是否也可以透過簡單的方式偽造?
如果我也理解正確的話,透過標頭提供的規則Access-Control-Allow-Origin
僅在瀏覽器中強制執行,例如簡單的 HTTP 用戶端可以規避/忽略它;正確的?
我還考慮過基本身份驗證,但我更喜歡某種不會在客戶端程式碼中公開任何內容的身份驗證,因為在這種情況下我需要向 js 提供身份驗證令牌。
鑑於 Docker 容器在 apache 上運行,我認為此用例最嚴格的解決方案是限制對已部署 LP 的 IP 的訪問,透過這,使用類似的東西這。我知道這更像是存取限制與身份驗證;但我認為這是這個登陸頁面場景的最佳解決方案,它不會向客戶公開任何內容?