Откройте REST API, подключенный к базе данных - что мешает плохому актеру спамить мою базу данных? - PullRequest
0 голосов
/ 16 сентября 2018

Я разработчик на стороне клиента с небольшим опытом работы на стороне сервера, и я изо всех сил пытаюсь понять, как создать веб-сайт на основе базы данных, не требуя от пользователей входа в систему.

Вариант использования довольно прост. Пользователь попадает на веб-сайт, загружает изображение и выполняет некоторую обработку этого изображения. Нажатие «поделиться» POST отправляет JSON на мою конечную точку, сохраняет его в БД и возвращает уникальный URL-адрес в текстовое поле (например, https://example.com/art/12345), которое позволяет пользователю поделиться своими изображениями с другими или просто вернуться и сделайте больше редактирования позже.

Что мешает кому-то делать POST <data> https://example.com/art 100 миллионов раз и заполнять мою базу данных с оплатой по мере использования?

Я видел примеры этого метода, основанного на ссылках, для совместного использования пользователями на многих сайтах, но я не понимаю, как остановить злоупотребления или безопасно ли просто открыть API, который позволяет выполнять запись в базу данных. Я не хочу, чтобы пользователи входили в систему.

1 Ответ

0 голосов
/ 16 сентября 2018

Я считаю, что самый простой метод - это квота, либо по имени пользователя для зарегистрированных пользователей, либо по IP, если вам не требуются входы в систему или вы хотите разрешить бесплатное использование только до определенной точки.Возможно, вы могли бы иметь меньшую квоту для пользователей, не вошедших в систему, чем для пользователей, вошедших в систему, и даже больше для платящих пользователей.

Ваш серверный код, который обрабатывает POSTS и хранит данные в базе данных, должен был бы позаботитьсятого, что.Я бы добавил его в свою таблицу user_data, создав дополнительный столбец, который отслеживает общее использованное пространство. создает задачу

Затем, когда пользователь добавляет новые данные, увеличивается общее используемое пространство.Когда они удаляют старые данные (у меня есть версионные веб-страницы, так что в итоге пользователь сможет выполнить откат к предыдущим версиям), тогда используемое пространство уменьшается.Наличие другой страницы, чтобы посмотреть, где они используют пространство, упрощает принятие решения о том, что удалять, чтобы остаться в рамках квоты / МБ / ГБ / ТБ / и т. Д., Или, может быть, просто / api / delete_old_pages или заметок или комментариев, или всехвыше.

...