Ограничение столбцов, которые могут быть написаны

Я создал правило с помощью Firebase Bolt компилятор.

    {
"rules": {
"users": {
"$user_id": {
".validate": "newData.hasChildren(['settings', 'provider', 'email', 'privilege_type', 'address_city', 'address_state', 'dt_created', 'dt_updated'])",
"settings": {
".validate": "newData.val().length > 0 && newData.val().length < 1000"....
".read": "auth != null && auth.uid == $user_id",
".write": "auth != null && auth.uid == $user_id"}
}
}
}

И я тестировал с помощью PHP-скрипта

<?php
require_once ('vendor/autoload.php');

const DEFAULT_URL = 'https://MYAPP.firebaseio.com/';
const DEFAULT_TOKEN = 'MYTOKEN';
const DEFAULT_PATH = '/users';

$firebase = new \Firebase\FirebaseLib(DEFAULT_URL, DEFAULT_TOKEN);

// --- storing an array ---
$test = array(
"foo" => "bar",
"i_love" => "lamp",
"id" => 42
);
$dateTime = new DateTime();
$firebase->set(DEFAULT_PATH . '/' . $dateTime->format('c'), $test);

// --- storing a string ---
$firebase->set(DEFAULT_PATH . '/name/contact001', "John Doe");

// --- reading the stored string ---
$name = $firebase->get(DEFAULT_PATH . '/name/contact001');

var_dump($name);

Итак, данные были введены

{
"2015-11-12T12:46:51 01:00" : {
"foo" : "bar",
"i_love" : "lamp",
"id" : 42
},
"2015-11-12T12:48:27 01:00" : {
"foo" : "bar",
"i_love" : "lamp",
"id" : 42
},
"name" : {
"contact001" : "John Doe"}
}

Мой вопрос (извините, если это тупой вопрос).

Я пытаюсь ограничить столбцы, которые могут быть написаны приложением, в соответствии с правилами ограничены (

".validate": "newData.hasChildren(['settings', 'provider', 'email', 'privilege_type', 'address_city', 'address_state', 'dt_created', 'dt_updated'])"

Но скрипт PHP может писать и создавать разные столбцы.

Где моя ошибка?

2

Решение

+1 Для использования болта!

Вы должны иметь другие разрешения для вашего сервера PHP, чем ваше приложение.

если ты доверять ваш сервер PHP, вы можете хранить секретный ключ для вашей Firebase на нем. Затем вы можете пройти аутентификацию с помощью этого пользовательского токена, и он предоставит вам полный доступ к базе данных Firebase.

Однако, если вам не нужна такая большая мощность, вы можете создать собственный токен, который имеет только определенные вами права доступа.

Ознакомьтесь с документацией по пользовательскому логину. https://www.firebase.com/docs/web/guide/login/custom.html

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]