2015-02-09 42 views
0

我已經在我的firebase應用程序上實施「推特認證」。如下所述: https://www.firebase.com/docs/web/guide/login/twitter.htmlFirebase推特認證和跨網站scription

它工作得很好。

一旦用戶登錄,他也能夠通過使用XMLHttpRequest發送一些請求到我的域。

當我發送XMLHttpRequest的有效載荷時,我傾向於通過javascript傳遞「用戶名」。

我剛剛纔明白,使用「Chrome開發工具」的人可能會攔截並篡改我的用戶名。

有沒有辦法解決這個問題?

============================================== ====================

例子: 想象一下,我有我的網站運行在這裏:

www.example.com/

這提供一個帶有大量javascript的靜態頁面index.html 該頁面使用firebase api,並允許用戶通過twitter(或github)進行身份驗證。 現在讓我們假設一個人(已經登錄)想要發佈一些東西。 我目前正在實施這樣的: https://www.example.com/writeComment?comment=hello&username=jeff&provider=github

我擔心的是,登錄不會擺弄了Chrome的控制檯一個人救我和更改用戶名。

回答

0

如果我理解正確的問題,那麼你有兩個服務客戶端連接到:火力地堡和一個你管理後端服務器。

您的後端服務器當然不應該信任用戶發送的任何內容,即使它是通過HTTPS傳送的。一個簡單的答案是向服務器發送認證令牌,並讓它使用此驗證用戶(因爲令牌不能被僞造)。

一個更優雅的解決方案是削減循環訪問Firebase並連接到REST API的整個過程。相反,請使用queue strategy並讓客戶端寫入Firebase。

隨着安全規則的到位,服務器不再需要擔心認證。如果用戶可以寫入安全路徑,則它們已經通過身份驗證,問題已解決。然後,服務器可以處理排隊的請求,並以安全的方式回寫到Firebase進行響應。

以這種方式,沒有REST API來維護,沒有雙重身份驗證,也沒有開銷。只需讓Firebase成爲權威機構,並將其他所有流程(特權或客戶)轉變爲消費者。

1

有沒有問題要解決。這沒有什麼錯。除非您在客戶端和API之間來回發送受保護的數據,否則您需要SSL。

請記住,完全由CORS啓用的API驅動的客戶端現在是常態。安全地處理數據取決於實施團隊。

在與火力地堡服務本身方面:

火力地堡處理其他許多安全細節給你。具體而言,我們爲我們的SSL證書使用強大的2048位密鑰,使用SHA256 HMAC簽名簽署身份驗證令牌,並使用BCrypt進行密碼存儲。

https://www.firebase.com/docs/security/quickstart.html

+0

謝謝,但我沒有明白你的觀點。 Firebase非常安全,沒有任何問題。我的問題更多的是因爲如果我需要向我的後端(爲網站提供服務的域)提交一些東西,人們仍然可以篡改用戶名(通過使用Chrome控制檯),因此安全性由Firebase處理(這很好)。因此,在我看來,安全措施僅僅是爲了保護由Firebase持有的JSON數據,但不知道如何處理上述情況 – Zo72 2015-02-09 17:41:07

+0

您可能需要考慮澄清您的原始問題。這是一個有趣的問題,但要求我做一個雙重正確的理解用戶案例。如果您顯示一段顯示基本流程的(僞)代碼片段,人們就會更容易看到您想要做的事情。 – 2015-02-09 19:28:52

+0

@FrankvanPuffelen你是對的。我不清楚。希望現在更好 – Zo72 2015-02-09 20:53:29