Защита веб-службы, работающей в App Engine - PullRequest
2 голосов
/ 07 сентября 2010

Наше приложение состоит из веб-службы REST, работающей на App Engine, и Flash-клиента.Мы должны убедиться, что только наш клиент может отправлять запросы к веб-сервису, и предотвращать такие ситуации, как атаки с повторением.

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

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

По большому счету это оно.Имеет ли это смысл?Какой будет допустимая дельта времени для отметки времени, когда сервер просматривает сообщение (я думал где-то около 30 секунд)?Любые другие комментарии?

РЕДАКТИРОВАТЬ: О, и что бы сделать хороший метод создания секретных ключей?

Спасибо.

Приветствия, Алекс

1 Ответ

1 голос
/ 07 сентября 2010

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

Существует только один безопасный способ сделать это - попросить конечных пользователей ввести имя пользователя / пароль и направить все через https.

Как вы уже описали, общий секрет бессмысленен. Извлечь это из флеш-файла тривиально. Зачем даже идти по этому пути, когда вы знаете, что он сломан?

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