2016-11-23 36 views
0

我一直在學習角度2,並一直在研究如何保護我的應用程序內的數據。角度和密鑰

如果可能的話,您可以如何阻止應用程序前端的數據?是否有可能通過節點服務器服務角度應用程序,例如使用Universal Angular,這意味着變量值可以從前端的用戶隱藏。

我基本上是尋找隱藏私鑰的解決方案,它可以讓應用訪問各種API /創建auth頭/路徑。我已經閱讀了一個解決方案,就是爲應用程序提供了一個API橋 - 所以我會連接到它以檢索數據/密鑰 - 但那麼我該如何保護它免受訪問?由於該端點會被暴露並可能被濫用,或者如果獲得密鑰,則響應可見。鎖定到我已閱讀的域的想法是不可靠的,因爲欺騙和鎖定到IP不會作爲其前端或通過應用程序?

我覺得有一個顯而易見的答案,我錯過了一些東西。

回答

0

很簡單,當服務器發送數據作爲對請求的響應時,則可以從外部訪問數據。 如果你不想那麼做,那就不要發送數據。

你沒有提到你實際嘗試解決什麼問題。例如,對於API密鑰,您可以對服務器上的API執行請求,並在您自己的服務器上爲您的客戶端提供API,然後使服務器將請求轉發給實際的API服務器。

+0

嗨Günter,這是有道理的 - 但這是什麼讓我跳了關於這個概念!假設我想連接到API來檢索一些數據。該API顯然需要進行身份驗證才能獲取數據,因此如果我通過自己的API對其進行代理服務 - 什麼可以阻止我的API端點被公開,並且人們可以通過它訪問它?我隱藏了連接,但是打開了門?然後我需要驗證 - 但是如何保護它?似乎是一個循環 –

+0

這是一個困難的問題。你想爲好人提供免費和方便的訪問,但阻止壞人。如果你找到一個好的解決方案,讓我知道;-)你可以做的是使用一些身份驗證令牌,當沒有提供請求時,不要轉發該呼叫。這樣您就不會將API暴露給任何人,也不會暴露API密鑰。 –

+0

因此,當應用程序加載時,可以採取某種解決方案 - 對應用程序進行基本請求以獲得JWT?使用它來驗證我自己的API? –

0

您必須假定前端中的所有內容都是,任何可以訪問您的前端的人都可以看到。 前端的所有JS變量,存儲(本地,會話),網絡請求等都不受前端用戶的保護。

您可以(也應該)使用SSL來隱藏您的服務器和瀏覽器之間的任何人的隱藏數據,但沒有辦法保護您前端用戶的前端數據。 (至少如果你的前端可以在「普通」瀏覽器上使用,而不是一些收緊的自助服務終端模式安裝。)