2011-01-20 3 views
1

Im работает над api. Api будет использоваться приложением iphone.Защитить api от повторных атак

Апи требует логина. Мы защищаем его аутентификацией форм asp.net. Клиент получает cookie для повторной отправки на предстоящие запросы.

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

Я думал о обновлении файла cookie при каждом запросе. Но приложение будет иногда отправлять несколько запросов asynchron. Так что не получится.

/Patrik

ответ

1

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

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

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

Нет, я не знаю, подходит ли эта схема для механизмов аутентификации asp.net.

0

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

+1

Временные метки работают только в том случае, если у обоих концов есть синхронизированные часы, и даже тогда вам все равно придется покинуть «слабое окно», чтобы учитывать несоответствие. – Marcin

0

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

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

Смежные вопросы