我試圖將一些安全規則應用於我們的firebase實例,但我似乎無法從iOS獲得尊重它們的呼叫。我從一個簡單的測試開始,驗證身份驗證(應該成功),然後嘗試向根寫入未定義的值(應該失敗)。Firebase在使用祕密時忽略安全規則
規則:
{
"rules":
{
//Default read and write access to authenticated users only
".read" : "auth != null",
".write" : "auth != null",
//Prevent undefined child variables
"$undef" : { ".validate" : false }
}
}
登錄:
- (void)authenticate
{
[_dataRef authWithCredential:SECURITY_CREDENTIAL //Firebase Secret JSON token
withCompletionBlock:^(NSError *error, id data){}
withCancelBlock:^(NSError *error)
{
//If the authentication becomes invalid, re-authenticate
[self authenticate];
}];
}
寫測試:
[[[[Firebase alloc] initWithUrl:ROOT_URL] childByAppendingPath:CHILD_PATH] setValue:VALUE];
現在我似乎無法弄清楚是爲什麼模擬器正確無法寫入該值,但iOS會忽略驗證並寫入數據。
此外,經過進一步測試,我遇到了第二個問題,從這個問題產生。如果我更改用於驗證某些不是有效的Firebase祕密令牌的憑據,那麼iOS將正確地驗證身份驗證失敗,但只要我通過身份驗證的模擬器就可以驗證任何字符串。是對的嗎?
這裏是關於祕密的文檔的具體部分(https://www.firebase.com/docs/rest/guide/user-auth.html#section-rest-server-authentication),以補充Chris的答案。 – Kato 2014-10-02 17:16:23
如果在https://www.firebase.com/docs/web/guide/understanding-security.html上的某個地方引用了它會很好 - 只是花了大量時間想知道爲什麼我的安全和驗證規則不符合要求,工作:P – 2014-12-16 02:55:37