подписывать запросы приложений iOS на сервер для предотвращения спама - PullRequest
3 голосов
/ 15 ноября 2011

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

Запросы из приложения iOS отправляются в виде POST-запросов на наш сервер и никоим образом не аутентифицируются.

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

Мы попытались использовать строку агента пользователя, которая содержит имя приложения, но легко подделывается.Есть ли способ проверить, что запросы, попадающие на наш сервер, поступают из нашего приложения?

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

Я не ищу идеального решения - 90% -ное решение, которое легко внедрить, является предпочтительным.

Спасибо!

1 Ответ

1 голос
/ 15 ноября 2011

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

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

Другой подход заключается в создании частного / открытого ключа pgpпара при регистрации - но это много работы для этой проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...