Типы HTTP-аутентификации и как создать безопасную базу данных?

Несколько месяцев назад я работал над приложением iOS (iphone), которое позволяло пользователям создавать некоторые виды событий и публиковать их как файлы XML / JSON на веб-сервере. Затем через их устройство они могли просматривать события от разных пользователей и т. Д.

Идея построить все это была довольно основательно. Когда приложение было запущено в первый раз, приложение подключилось к URL-адресу и попросило идентификатор пользователя (что уникально для каждого пользователя). Затем каждый раз, когда пользователь хотел что-то публиковать, мы использовали базовую аутентификацию HTTP и отправляли в виде заголовка идентификатор пользователя и XML-файл, содержащий всю информацию о созданном событии. Я никогда не работал на стороне сервера, поэтому я понятия не имел, насколько безопасна вся система.

Несколько дней назад я начал работать над моим приложением, которое является той же идеей, поэтому я начал работать на стороне сервера (php). Прежде чем я начал, я хотел увидеть, насколько безопасен предыдущий мой проект, и я был шокирован, никакой безопасности не было. Просто используя простой веб-отладчик (сниффер), я смог увидеть, где мое приложение подключилось, чтобы запросить идентификатор пользователя, как форма каждого XML-файла была отправлена ​​в базу данных и как сервер ответил.

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

Теперь мой вопрос заключается в том, какую проверку подлинности я должен использовать, так что не видно, какие файлы обмениваются между сервером и пользователем (XML), и как я могу создать механизм регистрации, чтобы кто-то не мог создать миллион идентификаторов с простым скриптом.

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

Просто используя простой веб-отладчик (сниффер), я смог увидеть, где мое приложение подключилось, чтобы запросить идентификатор пользователя, как форма каждого XML-файла была отправлена ​​в базу данных и как сервер ответил.

Используйте SSL для предотвращения атак типа «человек-в-середине».

Поэтому, если кто-то просто хотел наполнить базу данных миллионом идентификаторов пользователей или миллионами событий, было бы очень просто создать скрипт php для этого.

Это характер сетевой коммуникации. Используйте эвристику для ограничения количества нежелательных данных. Некоторые примеры:

  1. Один user_id может создавать не более одного события в секунду.
  2. Пусть клиент подписывает запрос для user_id и проверяет подпись на сервере.

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

«какую проверку подлинности я должен использовать, чтобы не было видно, какие файлы обмениваются между сервером и пользователем (XML)»

единственный «реальный» ответ на это – установить сертификат ssl , затем использовать протокол https