Фон:
Я разрабатываю схему аутентификации для веб-службы REST. Это «на самом деле» не обязательно должно быть безопасным (это скорее личный проект), но я хочу сделать его максимально безопасным в качестве упражнения / обучения. Я не хочу использовать SSL, так как не хочу хлопот и, в основном, затрат на его настройку.
Эти SO-вопросы были особенно полезны для начала:
- RESTful-аутентификация
- Рекомендации по защите REST API / веб-службы
- Примеры лучших веб-API SOAP / REST / RPC? А почему они тебе нравятся? А что с ними не так?
Я думаю об использовании упрощенной версии аутентификации Amazon S3 (мне нравится OAuth, но он кажется слишком сложным для моих нужд). Я добавляю в запрос случайно сгенерированный одноразовый номер, предоставленный сервером, чтобы предотвратить повторное воспроизведение. атаки.
Чтобы ответить на вопрос:
И S3, и OAuth полагаются на подписание URL-адреса запроса вместе с несколькими выбранными заголовками. Ни один из них не подписывает тело запроса для запросов POST или PUT. Разве это не уязвимо для атаки «человек посередине», которая сохраняет URL-адрес и заголовки и заменяет тело запроса любыми данными, которые хочет злоумышленник?
Похоже, я могу защититься от этого, включив хэш тела запроса в строку, которая подписывается. Это безопасно?