Я новичок в Firebase, и у меня проблемы с правилами безопасности. Недавно я взял на себя управление проектом, и текущие правила таковы:
{
"rules": {
".read": true,
".write": true
}
}
Очевидно, это небезопасно. Приложение позволяет пользователям (вошедшим в систему) вводить номер телефона клиента и использует Twilio для отправки этим клиентам текстового сообщения с просьбой просмотреть продукт пользователя. Клиентам не нужно выполнять вход в систему - они могут просто щелкнуть ссылку из Twilio, ввести свой звездный рейтинг и получить возможность перейти на другие сайты с обзорами.
В базе данных Firebase клиент (и вводимый им обзор) является потомком пользователя, который их ввел. Основываясь на документации, я не думаю, что смогу сделать правило, согласно которому пользователи должны проходить аутентификацию, потому что это будет применяться и ко всем дочерним элементам (клиентам).
Нужно ли мне добавлять анонимную аутентификацию в мое приложение, чтобы создать анонимный uid для каждого клиента? Есть ли более простой способ его обезопасить?
Вот пример экспорта Json из Firebase:
{
"profiles" : {
"User1_UID" : {
"guests" : {
"guest-id-here" : {
"createdOn" : "2018-06-28T16:23:53.793Z",
"firstName" : "",
"id" : "id-here",
"lastName" : "",
"phone" : "",
"ratingLeft" : true,
"reviewSite" : true,
"reviewSiteClicked" : {
"facebook" : true,
"google" : true,
"other" : false,
"tripadvisor" : true,
"yelp" : true
},
"reviewSiteClickedOn" : "2018-06-28T16:26:46.237Z",
"reviewedOn" : "2018-06-28T16:25:22.996Z",
"starRating" : "5"
},
"guest2-id-here" : {
"createdOn" : "2018-07-15T18:57:52.171Z",
"firstName" : "Joe",
"id" : "guest2-id",
"lastName" : "Schmoe",
"phone" : "+1234567890",
"ratingLeft" : false,
"reviewedOn" : "",
"starRating" : ""
},
}
},
"User2_UID" : {
"guests" : {
"guest-id-here" : {
"ratingLeft" : true
}
}
},
Обновлен пост, чтобы показать структуру базы данных.
Ваше приложение использует Firebase Auth
?
Да, я использую Auth. Владельцы учетных записей могут войти в систему с помощью электронной почты / пароля. Гости, оставляющие отзывы, не авторизуются.
Зарегистрированные пользователи идентифицируются по их UID, а как вы идентифицируете гостей?
Гости получают идентификатор, когда они созданы вошедшими в систему пользователями, и этот идентификатор включается в URL-адрес, отправляемый Twilio. URL-адрес выглядит так: 5stars.q4launch.com/rating/USERID/GUESTID. Однако у гостя нет имени пользователя или пароля. Они могут просто щелкнуть ссылку в тексте, сделать свой выбор обзора, и он будет сохранен.
Где оставляют рейтинг «Гости»? Не могли бы вы опубликовать структуру БД?
Фактически вы можете создать правило для аутентификации пользователей и применять read / write = true только к гостевой части вашей структуры.
Пожалуйста, разместите здесь свою структуру данных ...