Так что я скоро запускаю свое приложение и работаю с правилами базы данных Firebase, чтобы быть как можно более строгими. Ниже приведены мои правила.
Правила:
У меня есть 2 типа пользователей:
Пользователи приложений для смартфонов.
Модули GPRS, которые отправляют данные в javascript, и этот javascript отправляет данные в мою базу данных firebase.
Пользователи приложения МОГУТ прочитать все данные, если они аутентифицированы.
- Пользователи приложения НЕ МОГУТ писать что-либо в базу данных.
- Javascript НЕ МОЖЕТ читать что-либо (Javascript аутентифицирован в базе данных, а его UID - «xyz»).
- Javascript МОЖЕТ записывать только в узел «Статус» и только если в нем уже записаны данные, он не может создавать дочерние элементы этого узла, а новые данные только обновляют существующие данные.
- Данные, записываемые Javascript, должны быть целыми числами больше 0 и ниже 4.
Итак, учитывая код правил ниже:
Можно ли как-нибудь сделать их крепче?
Есть ли какие-то недостатки, которые могут позволить кому-то нарушать объявленные мной правила?
{"rules": {
".read": false,
".write": false,
"Parking_Spots":
{
".read": "auth != null && auth.uid !== 'xyz'",
".write": false,
"$City":
{
".read": "auth != null && auth.uid !== 'xyz'",
".write": false,
"$ID_Parking_Spots":
{
".read": "auth != null && auth.uid !== 'xyz'",
".write": false,
"Coordinates":
{
".read": "auth != null && auth.uid !== 'xyz'",
".write": false,
},
"Status":
{
".read": "auth !== null && auth.uid !== 'xyz'",
".write": "auth.uid === 'xyz' && data.exists()",
".validate": "newData.isNumber() && newData.val() > 0 && newData.val() < 4",
},
}
}
}