簡體   English   中英

使用auth的firebase有多安全?

[英]How secure is firebase with auth?

我不知道從哪里開始,但我最近在搜索沒有服務器數據庫的時候看到了'Firebase',雖然我覺得很有趣,我有點擔心將我的api代碼直接放在js文件中,這顯然可以通過源代碼看到但我已經讀過你可以改變讀/寫規則並需要認證。 所以在閱讀完一些頁面后我不再擔心API了

但主要問題是:

我想為我的頁面創建一個管理門戶,所以我的管理頁面位於localhost / admin / <<<該頁面將只有一個登錄表單來訪問門戶網站,所以一切都設置好了

var config = {
    apiKey: "",
    authDomain: "",
    databaseURL: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: ""
};

firebase.initializeApp(config);

firebase.auth().onAuthStateChanged(function(user) {

      if (user) {
      window.location = '/portal.html'
      }

      else {
      // Do nothing
      }
});

$("#loginbtn").click(function() {

var email = $('#login-name').val();
var password = $('#login-pass').val();

firebase.auth().signInWithEmailAndPassword(email, password)
    .catch(function(error) {
  // Handle Errors here.

});

});

因此,當我成功登錄時,它會將我重定向到該頁面,但有人可以查看源代碼然后手動轉到該頁面並輸入它嗎?

或者即使我打算構建一個頁面應用程序並決定在登錄后更改頁面狀態,之后我將要做的任何功能,有人仍然可以找到並注入代碼嗎?

我不是真正的專家,但這是我在開始我的項目之前的想法,那么還有其他方法嗎?

如果您要添加管理功能並且使用的是Firebase實時數據庫,則需要設置一些自定義Firebase規則,以便僅允許管理員訪問受限數據。 因此,如果非管理員用戶登錄,則他們無法修改/訪問僅管理員數據。 使用Firebase規則執行此操作的一種方法是使用帶有uid1: "bojeil@bla.com", uid2: "puf@bla.com"/whitelist節點uid1: "bojeil@bla.com", uid2: "puf@bla.com"用於存儲所有列入白名單的管理UID,然后使用頂級安全規則限制管理員僅限節點,如".write": "auth != null && root.child('whitelist').child(auth.uid).exists()" 這很簡單,但還有很長的路要走。

如果您不使用實時數據庫並構建傳統Web應用程序,則需要保護受限管理員資源。 您需要將Firebase ID令牌發送到后端。 您可以通過設置會話cookie及其值來確保在刷新Firebase ID令牌時每小時更新一次會話cookie。 當cookie與您的請求一起發送時,您檢查它,解碼它(您可以使用Firebase管理SDK)並檢查它所屬的用戶是否為管理員。 如果是這樣,您可以允許訪問,否則您將阻止訪問。 在每個頁面上,您將添加一個onAuthStateChanged偵聽器。 如果觸發為null,則重定向到登錄頁面。 如果會話cookie包含非管理員的ID令牌,則可以在服務器上對用戶非管理員部分執行HTTP重定向。

tldr; 您需要通過向請求發送Firebase ID令牌並對其用戶具有足夠權限的雙重檢查來強制執行對您后端的檢查。

暫無
暫無

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

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