我正在開發提供REST API的Spring Boot Web應用程序。我的大多數頁面(thymeleaf模板)都使用此API與後端進行通信(使用AJAX請求)。我已閱讀了諸如基本認證,OAuth2等不同方法。這些方法描述了用戶認證,之後用戶可以訪問API。但我不希望用戶使用瀏覽器或REST客戶端(即郵遞員Chrome瀏覽器擴展程序,可訪問瀏覽器Cookie,通常存儲訪問令牌)直接與我的API進行通信。
我有這樣的:
(1)User - >(2)MyOwnPages - >(3)RestAPI。
有沒有辦法阻止直接通信1-3?
我可以以某種方式確定請求是從我的頁面創建的(即向每個請求添加某種訪問令牌)?有沒有最佳做法?
謝謝!如何僅允許自己的頁面訪問API?
2
A
回答
1
不,這是完全不可能的。你可以添加令牌來讓它變得更加困難,在Javascript中生成東西等等,但是所有這些都會讓你的頁面變得更慢並且更容易崩潰。
的流動不是:
(1) User --> (2) MyOwnPages --> (3) RestAPI.
反倒是:
(1) User --> (2) Users Browser --> (3) RestAPI.
而且由於它是一個的進行調用於API的瀏覽器,沒有合理的方式來告訴之間的區別, cURL,Postman等。任何你可以做的事情,用戶都可以用Wireshark這樣的方式來確切地知道發送的內容,並且從中可以做任何瀏覽器正在做的事情。
更準確地理解你爲什麼要這樣做會更有幫助,因爲無論你的最終目標是什麼,都可能有更好的解決方案。
+0
感謝您的回覆!我的目標是防止用戶做壞事。假設我有下一個端點:POST ../api/checks。前端使用該端點在成功付款後創建支票。我不希望用戶使用某些其他客戶端手動創建檢查。或者我應該只是刪除這樣的端點,並將這個邏輯封裝在我的其他端點(只是防止使用單獨的端點創建檢查,而不是在支付成功後自動創建檢查)? –
相關問題
- 1. 如何只允許我自己的應用程序訪問我的API
- 2. 如何僅允許API訪問android或ios應用程序(laravel)?
- 3. 如何僅允許來自特定域的訪問者?
- 4. 允許匿名訪問默認頁面
- 5. 允許用戶訪問[Authorize]頁面 - MVC
- 6. 只允許Selenium訪問該頁面
- 7. 如何僅允許從站點主頁訪問輔助文件?
- 8. 只允許從我自己的應用程序訪問我的REST API?
- 9. 我如何允許用戶只使用cancan訪問他們自己的顯示頁面?
- 10. 如何獲得會話uid以允許訪問頁面
- 11. 限制訪問頁面只允許從某個頁面
- 12. 如何僅允許180度的自轉?
- 13. 如何使用自己的asp.net頁面訪問網站?
- 14. 如何自己的頁面
- 15. 允許匿名用戶僅訪問ASP.NET中的登錄和註冊頁面
- 16. 僅允許AWS API網關訪問EC2實例
- 17. 允許我的API通過AJAX訪問
- 18. 如何允許EC2實例從操作系統訪問其自己的標籤
- 19. 如何僅允許來自我的網頁的發佈請求?
- 20. 如何僅允許訪問postgresql中的kubernetes窗格?
- 21. 禁止直接訪問php頁面,但允許訪問,如果從特定頁面訪問
- 22. Api網關不允許訪問控制 - 允許來源
- 23. 訪問控制 - 允許來源不允許WCF Web API RESTful
- 24. 只允許訪問組,但API全部
- 25. 允許用戶使用CakePHP訪問API
- 26. OpenStack允許從vm訪問api
- 27. 如何使用robots.txt僅允許抓取工具訪問index.php?
- 28. 如何允許訪問的CakePHP2
- 29. 只允許從特定的HTML頁面訪問圖像
這是DMZ的用途(https://en.wikipedia.org/wiki/DMZ_(computing))。在你的情況下,你需要兩個帶有防火牆的應用程序:一個在DMZ中間充當中介,另一個在後端。 – vtosh