Облачные функции, Cloud Firestore, Cloud Storage: как защититься от ботов? - PullRequest
0 голосов
/ 02 февраля 2020

Я уже использую ReCAPTCHA для Android приложений на стороне клиента (я, конечно, также реализовал проверку на стороне сервера).

Однако этот ReCAPTCHA реализован только в одном действии. Но, конечно, хакеры могут изменить приложение. Например:

  • они могут просто удалить ReCAPTCHA из всех действий,

  • или запустить другое действие, в котором ReCAPTCHA не будет реализовано; это случай между прочим: я не реализовывал ReCAPTCHA в каждом действии, потому что он бесполезен в соответствии с первой проблемой, которую я только что упомянул.

Так что я хотел бы обнаружить бота и спам-запросы в Cloud Functions, затем в Cloud Firestore, затем в Cloud Storage для следующих обращений: чтение, запись, вызов функции. Это позволило бы мне предотвратить нежелательное содержимое, например, сохранять в Firestore (спам-сообщения и т. Д. c.) И избегать превышения моей ежемесячной квоты выставления счетов (например, из-за спам-запросов в Firestore).

Возможно ли это? Как?

Ответы [ 2 ]

1 голос
/ 02 февраля 2020

Для этих продуктов нет «обнаружения спама». Ваши правила безопасности будут определять, кто может получить доступ к каким данным. Если у вас нет правил безопасности и вы разрешаете доступ publi c, тогда любой сможет получить эти данные, и вы будете платить за них, когда это произойдет. Это характер общедоступных облачных сервисов.

Если вы хотите больше контролировать данные в этих продуктах, вы можете прекратить весь прямой доступ c с правилами безопасности и заставить клиентов go через бэкэнд, которым вы управляете. Бэкэнд может попытаться применить некоторый лог c, чтобы определить, является ли это «спамом», по любым критериям, которые вы определяете. Для этого не существует простого алгоритма - вам нужно определить, что означает «спам», и отклонить запрос, если он соответствует вашим критериям.

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

0 голосов
/ 03 февраля 2020

Просто подумал, что добавлю, что есть другой способ ограничить доступ к облачным функциям.

Даг уже описал способ 1, в котором вы записываете логи доступа c в облачной функции. В этом случае функция все еще вызывается, но какой путь к коду выбран, зависит от вашей логики c.

Способ 2 заключается в том, что вы можете установить функцию как "приватную", чтобы ее нельзя было вызывать , кроме как для зарегистрированных пользователей (вы выбираете разрешения). В этом случае неаутентифицированные запросы отклоняются, и функция не вызывается вообще.

Способ 2 работает, потому что каждый проект Firebase также является проектом Google Cloud Platform, и GCP предлагает эту функциональность. Вот соответствующие ссылки на (a) Конфигурирование функций как public / private , а затем (b) аутентификация конечных пользователей ваших функций .

...