簡體   English   中英

AWS API Gateway 僅限來自 S3 靜態網頁的受限訪問

[英]AWS API Gateway restricted access from S3 static web page only

我有一個 Node.js express 服務器部署到 AWS EBS,客戶端,用 React 編寫,作為靜態網頁部署到 S3 存儲桶。

我正在開發某種特定服務的注冊系統,我不想從用戶那里請求憑據,所以我猜 csrf \\ jwt 是行不通的。

無論如何要阻止來自客戶端以外的所有 http 請求? 現在,有人可能會使用 Postman 並向我的服務器發出請求,例如僅使用電子郵件創建用戶。

我嘗試使用私有 API 網關,但找不到讓客戶端成功發出請求的方法。 我想過加密 http 請求有效負載,但無論如何我都沒有找到將私鑰存儲在任何人通過瀏覽器都看不到的地方...

你不能阻止所有的HTTP請求,但肯定可以通過添加middleware來拒絕

app.use((req, res, next) => {
  if(req.protocol === 'http' && req.hostname!== <client domain>){
    return res.sendStatus(403);
  } next();
})

來源只是某人可以在他們的 Postman 請求中設置的 HTTP 標頭,即“欺騙”。 您可以檢查來源以阻止隨機掃描程序機器人,但它不會阻止任何確定的人。 所以請不要將其混淆為實際的安全性。 您可以使用附加到您的 EB 負載均衡器的 AWS Web 應用程序防火牆來執行此操作,或者像其他答案一樣在您的快速中間件中添加檢查。

關於私有 API 網關,這在這種情況下永遠行不通,這僅適用於 VPC 網絡內的資源,並且您的 React 應用程序正在公共互聯網上的人們的 Web 瀏覽器中運行。

關於創建用戶帳戶的人“僅使用電子郵件”由您處理,您應該完全驗證服務器端的請求,並且知道請求可能來自使用像 Postman 這樣的工具的人,因為有在你的場景中沒有辦法完全阻止這種情況。

如果您想為此使用 API Gateway,您可以嘗試在那里實現請求驗證 您還可以將 Web 應用程序防火牆附加到 API 網關。 我相信您也可以將源頭檢查作為 API 網關請求驗證器的一部分。

暫無
暫無

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

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