我正在構建一個具有身份驗證系統和大量發布請求的應用程式,
我想知道如何讓我的后端端點只接受來自我的應用程式的請求,而不是來自 Postman 之類的其他任何東西。
例如,如果用戶提交了一個注冊表單,一個帶有用戶資訊的 post 請求被發送到我的后端,我如何確保這個 post 請求來自我的應用程式?
我在想的是在客戶端保存一個秘密,該秘密將與每個請求一起發送到后端,以便我可以確保請求來自我的應用程式。我認為 SSL pinning 就是為此而生的。
我知道如果提取 APK 檔案,任何人都可以訪問我的應用程式源代碼。我想確保沒有人可以更改或竊取我的源代碼。
我讀到我可以通過混淆它來使我的代碼不可讀(我仍然需要弄清楚我將如何在我的 EAS 構建中做到這一點),這足夠了嗎?
而且我必須使用 JailMonkey 來檢測設備是否已植根。
我正在使用 Expo 安全存盤在客戶端保存我的敏感資訊。
這種方法是否足夠好,我有什么遺漏嗎?我對安全性的了解為零,這只是我通過搜索了解到的。
如果您有更好的建議,請告訴我。
先感謝您。
uj5u.com熱心網友回復:
訪問 API 服務器的 WHO 和 WHAT 之間的區別
我想知道如何讓我的后端端點只接受來自我的應用程式的請求,而不是來自 Postman 之類的其他任何東西。
首先,您需要了解訪問 API 服務器的WHO和WHAT之間的區別,以便更好地為您的問題尋找解決方案。
我寫了一系列關于 API 和移動安全的文章,在文章為什么你的移動應用需要 Api Key?您可以詳細閱讀訪問 API 服務器的人員和訪問者之間的區別,但我將在此處提取其中的主要內容:
向 API 服務器發出請求的內容是什么。它真的是您的移動應用程式的真實實體,還是機器人、自動腳本或攻擊者使用 Postman 之類的工具手動繞過您的 API 服務器?
誰是移動應用程式的用戶,我們可以通過多種方式進行身份驗證、授權和識別,例如使用 OpenID Connect 或 OAUTH2 流。
因此,請考慮誰是您的 API 服務器將能夠驗證和授權對資料的訪問的用戶,并考慮代表用戶發出請求的軟體是什么。
當您掌握了這個想法并且它在您的思維中根深蒂固時,您就會從另一個角度看待移動 API 安全性,并且能夠看到以前從未存在過的攻擊面。
證書固定和中間人攻擊
我在想的是在客戶端保存一個秘密,該秘密將與每個請求一起發送到后端,以便我可以確保請求來自我的應用程式。我認為 SSL pinning 就是為此而生的。
移動應用程式端的證書固定用于保證應用程式僅與您的 API 服務器通信,而不是其他任何東西,例如當發生中間人攻擊并且應用程式的請求被攔截、可能修改和/或重放或簡單地保存時以后從中提取秘密。
固定并不能向您的 API 服務器保證請求確實來自它所期望的,即您的移動應用程式的真實且未經修改的版本,“除非”您實施相互固定,否則不鼓勵這樣做,因為您將需要在移動應用程式中發送 API 服務器證書的私鑰。即使你這樣做了,攻擊者需要做的只是提取私鑰,并且能夠與你的 API 服務器進行通信,就像它是你真正的移動應用程式一樣。
我沒有在 react-native 移動應用上實作 pinning 的文章,但您可以查看我為 Android 撰寫的文章,以更好地理解所有程序。閱讀我的文章Securing HTTPS with Certificate Pinning on Android,了解如何實施證書固定,最后您將了解它如何防止中間人攻擊。
在本文中,您了解到證書鎖定是將域名與其預期的 X.509 證書相關聯的行為,這對于保護證書鏈中基于信任的假設是必要的。錯誤頒發或泄露的證書是一種威脅,還需要保護移動應用程式免受其在公共 wifi 等惡劣環境中的使用或 DNS 劫持攻擊。
您還了解到,在處理個人身份資訊或任何其他敏感資料的任何時候都應使用證書固定,否則移動應用程式和 API 服務器之間的通信通道可能會被攻擊者檢查、修改或重定向。
最后,您了解了如何通過在 Android 應用程式中實施證書鎖定來防止中間人攻擊,該應用程式利用現代 Android 設備的網路安全組態檔,后來又使用了支持現代和舊設備證書鎖定的 TrustKit 包。
繞過證書固定
我認為 SSL pinning 就是為此而生的。
好訊息是你已經學會了如何很好地防止中間人攻擊,現在壞訊息是它可以被繞過,是的,我還寫了一篇關于如何在 Android 上使用它的文章(抱歉沒有具體說明反應-本國的)。如果您想了解它的機制,請閱讀我的文章How to Bypass Certificate Pinning with Frida on an Android App:
今天我將展示如何使用 Frida 檢測框架在運行時掛鉤到移動應用程式并檢測代碼以執行成功的中間人攻擊,即使移動應用程式已經實作了證書鎖定。
繞過證書固定并不難,只是有點費力,并且允許攻擊者詳細了解移動應用程式如何與其 API 通信,然后使用相同的知識來自動化攻擊或圍繞它構建其他服務。
代碼混淆和修改代碼
我知道如果提取 APK 檔案,任何人都可以訪問我的應用程式源代碼。我想確保沒有人可以更改或竊取我的源代碼。抱歉,一旦你將它發布給公眾,每個人都可以搶到它,即使被嚴重混淆,它仍然可以靜態地或在運行時修改它。
我讀到我可以通過混淆它來使我的代碼不可讀(我仍然需要弄清楚我將如何在我的 EAS 構建中做到這一點),這足夠了嗎?
不,您可以使用最好的混淆工具,但是精通反混淆技術的攻擊者將能夠理解您的代碼并靜態或在運行時對其進行修改。有幾個開源工具可以讓這變得簡單,如果您閱讀文章繞過證書固定,那么您已經看到了在運行時使用Frida執行此操作的示例:
將您自己的腳本注入黑盒行程。掛鉤任何功能、監視加密 API 或跟蹤私有應用程式代碼,無需源代碼。編輯,點擊保存,立即查看結果。所有這些都無需編譯步驟或程式重新啟動。
RASP - 運行時應用程式自我保護
而且我必須使用 JailMonkey 來檢測設備是否已植根。
使用 Frida 可以修改檢查以始終回傳設備未植根。此外,JailMonkey 可能無法檢測到所有用于隱藏設備已root 的方法,這是一個移動的目標,因為黑客和開發人員一直處于貓捉老鼠的游戲中。
敏感資訊安全
我正在使用 Expo 安全存盤在客戶端保存我的敏感資訊。
即使一個秘密被安全存盤,它也需要在某個時候使用,攻擊者會將 Frida 鉤到這一點上并提取秘密或在中間人攻擊中進行。
可能的解決方案
這種方法是否足夠好,我有什么遺漏嗎?
從我寫的所有內容來看,無論您在正確保護您的敏感資訊并保證您的 API 服務器知道發出請求的是它所期望的真正的移動應用程式,都注定要失敗,但安全性這一切都是為了應用盡可能多的防御層,就像在中世紀的城堡、監獄等中所做的那樣,因為這將增加成功攻擊所需的努力、時間和專業知識。
您現在需要找到一種解決方案,允許您檢測 MitM 攻擊、被篡改和修改的 apk 二進制檔案、運行時存在的 Frida,并且可以向通過移動應用程式證明的移動應用程式提供運行時秘密,以非常高的置信度保證這種威脅不存在。不幸的是,我不知道任何可以提供所有這些功能的開源專案,但是存在商業解決方案(我在那里作業),如果您想了解更多資訊,可以閱讀這篇文章:
動手移動應用程式和 API 安全 - 運行時機密保護
在上一篇文章中,我們看到了如何通過使用移動應用證明并將 API 請求委托給代理來保護 API 密鑰。這篇博文將介紹您無法將 API 請求委托給代理的情況,但您希望在移動應用程式中洗掉 API 密鑰(秘密)的硬編碼以減少使用靜態二進制分析的情況和/或運行時檢測技術來提取這些秘密。
我們將展示如何通過使用移動應用程式證明來確保即時運行時秘密交付,將您的秘密動態傳送到不受攻擊的移動應用程式的正版和未修改版本。我們將演示如何使用上一篇文章中相同的 Astropiks 移動應用程式來實作這一點。該應用程式使用 NASA 的每日圖片 API 來檢索影像和描述,這需要一個注冊的 API 密鑰,該密鑰最初將被硬編碼到應用程式中。
你想加倍努力嗎?
在回答安全問題時,我總是喜歡參考 OWASP 基金會的出色作業。
對于 APIS
OWASP API 安全前 10 名
OWASP API 安全專案旨在通過強調不安全 API 中的潛在風險并說明如何減輕這些風險,為軟體開發人員和安全評估人員提供價值。為了促進實作這一目標,OWASP API 安全專案將創建和維護一個 Top 10 API 安全風險檔案,以及一個檔案門戶,用于在創建或評估 API 時提供最佳實踐。
對于移動應用
OWASP 移動安全專案 - 十大風險
OWASP 移動安全專案是一個集中資源,旨在為開發人員和安全團隊提供構建和維護安全移動應用程式所需的資源。通過該專案,我們的目標是對移動安全風險進行分類并提供開發控制以減少其影響或被利用的可能性。
OWASP - 移動安全測驗指南:
移動安全測驗指南 (MSTG) 是移動應用安全開發、測驗和逆向工程的綜合手冊。
uj5u.com熱心網友回復:
簡短的回答你不能。
我想知道如何讓我的后端端點只接受來自我的應用程式的請求,而不是來自 Postman 等其他任何東西的請求
您在這里唯一能做的就是防止 Cors 跨站點請求偽造。Y 阻止其他服務器呼叫您的 api。而且你不能只讓你的應用程式與服務器通信你可以在應用程式中硬編碼(請求中的引數)發送到服務器。但是黑客可以監聽設備發出的請求
我知道如果提取 APK 檔案,任何人都可以訪問我的應用程式源代碼。我想確保沒有人可以更改或竊取我的源代碼。
簡短的回答你也不能
您可以使用 ProGuard(本機代碼)在本機 android 上進行混淆,并且 ios 在發布時已經編譯了二進制檔案,但這些不是 js
所以基本上任何人都可以在純文本編輯器中閱讀你的 bundle js。也許將來facebook可以為愛馬仕做點什么。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/519779.html
