簡體   English   中英

如何保護一個簡單的 Node.js RESTful API

[英]How to secure a simple Node.js RESTful API

我正在開發一個簡單的新聞應用程序,用戶無需登錄即可查看最新消息,我不知道如何確保它的安全,我已閱讀應使用帶有 OAuth2 的 JWT 但據我了解,用戶必須登錄到提供商獲取令牌,但我希望用戶無需登錄即可讀取數據。 我現在擔心的是如何防止其他人在他們的應用程序中使用我的 API,我也擔心 DoS 攻擊。

挑戰

我正在開發一個簡單的新聞應用程序,用戶無需登錄即可看到最新消息,我不知道如何使其安全

好吧,您給自己買了一個非常巨大的挑戰,因為即使您要求您的用戶登錄,這仍將是一個巨大的挑戰,因為我們所知道的 web 是在早期設計的,當時天真的假設只有真誠的人會使用它,因此保護最初並非設計為安全的東西成為一項非常艱巨的任務。

將 API 服務器保護並鎖定到特定應用程序要求在每個請求中都需要使用某種秘密,以驗證正在執行請求的內容,但是一旦將 web 應用程序或移動應用程序向公眾發布,則其上的任何秘密現在屬於公共領域,因此不再是秘密,因為最好將其用作弱標識符。

Web 應用

web 應用程序在瀏覽器中運行,因此攻擊者需要做的就是檢查頁面源並提取秘密,然后在自動腳本或來自curl或 Z6F061E1CAD5E2783CEA0B2976ZED 等工具的手動請求中使用它。

移動應用

一些開發人員認為,因為移動應用程序是以二進制形式發布的,所以他們可以將秘密放在那里,沒有人會找到它......好吧,我不得不說過去我是其中之一,但后來我來了了解存在許多開源工具可以使這項任務變得微不足道,即使是腳本小子也可以做到。 我首選的工具是MobSF ,你可以在這篇文章中看到一個使用它的例子,我寫了How to Extract an API Key from a Mobile App with Static Binary Analysis

可用於逆向工程的開源工具范圍很廣,在本文中我們確實無法觸及這個主題的表面,但我們將專注於使用移動安全框架 (MobSF) 來演示如何逆向工程我們的移動應用程序的 APK。 MobSF 是一組開源工具,它們在一個有吸引力的儀表板中顯示其結果,但在 MobSF 和其他地方使用的相同工具可以單獨使用以實現相同的結果。

MobSF - 移動安全框架

Mobile Security Framework 是一個自動化的一體化移動應用程序 (Android/iOS/Windows) 筆測試框架,能夠執行 static 分析、動態分析、惡意軟件分析和 web ZDB974238714CA8DE634A7CE1D083A 測試。

要點是,一旦發布應用程序,其中包含的任何敏感信息都必須被視為已泄露。

JWT 和 OAUTH2

我已經讀到應該使用帶有 OAuth2 的 JWT 但據我了解,用戶必須登錄到提供程序才能獲取令牌

是的,用戶需要登錄才能獲得 OAuth 令牌,但是來自用戶登錄成功的任何類型的令牌只會識別請求中的,而不是請求中的內容,根據我的經驗,是一個非常開發人員之間的常見誤解,無論他們是初級還是高級開發人員。

WHO和WHAT訪問API服務器的區別

我寫了一系列關於 Mobile API 安全性的文章,以及在文章Why Does Your Mobile App Need An Api Key? 您可以詳細閱讀什么向您的 API 服務器發出請求之間的區別:

向 API 服務器發出請求的原因是什么 它真的是您的移動應用程序的真實實例,還是機器人、自動腳本或攻擊者使用 Postman 之類的工具手動在您的 API 服務器周圍探查?

是移動應用程序的用戶,我們可以通過多種方式進行身份驗證、授權和識別,例如使用 OpenID Connect 或 OAUTH2 流。

您可能會感到驚訝,有時甚至您的合法用戶也可能會攻擊您的 API 服務器,以試圖從您的服務中獲得利益,否則他們將無法訪問。

將 API 服務器固定並鎖定到應用程序

但我希望用戶無需登錄即可讀取數據。 我現在關心的是如何防止其他人在他們的應用程序中使用我的 API

要在您的應用程序中實現此要求,您需要找到保護和鎖定 API 服務器的方法,以僅處理來自 web 和移動應用程序的真實實例的請求。

我不得不說,對於移動應用程序,當采用移動應用程序證明概念時,可以非常自信地實現這一點,但對於 web 應用程序,我們只能通過使用人工智能解決方案盡最大努力做到這一點。

要了解如何為 web 應用程序執行此操作,請閱讀我對來自應用程序調用的 Secure api 數據的問題給出的答案,特別是標題為捍衛 ZDB974238714CA8DE634A7CE1D083A1F4的部分。

對於移動應用程序,您應該閱讀我對如何保護移動應用程序的 API REST問題的答案 ,更具體地說,在保護 API 服務器部分和可能更好的解決方案部分。

如果您已經閱讀了我上面鏈接的兩個答案,您現在可能會更好地理解為什么我最初說這是一個巨大的挑戰

拒絕服務攻擊

你也擔心 DoS 攻擊。

這通常不會在應用程序級別解決,而是最好在基礎架構級別處理,例如在防火牆中,可以應用規則來識別和丟棄 DoS 數據包,但如果它們過於嚴格,它們也可能會阻止合法用戶,而如果他們太放松,他們會讓 DoS 數據包通過。 要獲得更有效的 DoS 攻擊保護,您需要使用專門的軟件,即使是這種軟件也可能需要在大規模 DoS 攻擊期間進行人工干預。

所以我的建議是,您首先向防火牆添加一些規則以丟棄 DoS 數據包,和/或如果您使用雲提供商,您可能希望查看他們可以在您的帳戶中提供的 DoS 保護級別。 例如,我知道一些 CDN 提供商確實在一定程度上免費提供 DoS 保護,因此可能值得您考慮讓所有流量都通過 CDN 路由,這也帶來了 CDN 的其他傳統優勢,也就是從最近的資產提供服務位置給您的客戶。

您想要額外的里程嗎?

在任何對安全問題的回答中,我都不會拒絕參考 OWASP 基金會的出色工作。

對於 Web 應用程序

OWASP Web 十大風險

OWASP Top 10 是一個強大的 web 應用程序安全意識文檔。 它代表了對 web 應用程序最關鍵的安全風險的廣泛共識。 項目成員包括來自世界各地的各種安全專家,他們分享了他們的專業知識來制作此列表。

Web 安全測試指南

OWASP Web 安全測試指南包括用戶可以在自己的組織中實施的“最佳實踐”滲透測試框架和描述測試最常見 web 應用程序和 Z2567A5EC973E07AC2DZZ98408 服務安全問題的技術的“低級”滲透測試指南。

對於移動應用

OWASP 移動安全項目 - 十大風險

OWASP 移動安全項目是一個集中資源,旨在為開發人員和安全團隊提供構建和維護安全移動應用程序所需的資源。 通過該項目,我們的目標是對移動安全風險進行分類並提供開發控制以減少其影響或被利用的可能性。

OWASP - 移動安全測試指南

移動安全測試指南 (MSTG) 是移動應用安全開發、測試和逆向工程的綜合手冊。

對於 APIS

OWASP API 安全前 10 名

OWASP API 安全項目旨在通過強調不安全 API 的潛在風險並說明如何減輕這些風險,為軟件開發人員和安全評估人員提供價值。 為了促進實現這一目標,OWASP API 安全項目將創建和維護前 10 名 API 安全風險文檔,以及創建或評估 API 時的最佳實踐文檔門戶。

暫無
暫無

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

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