0

Я пытаюсь понять, как я могу реализовать безопасность с помощью успокаивающего клиента для аутентифицированного пользователя. Сценарий, с которым у меня возникают проблемы, заключается в том, как остановить пользователя от обновления покупки, которая не является его собственностью, так как клиент-клиент возвращается обратно. Идентификатор продукта может быть легко изменен для опытного пользователя. Мне не очень интересно быть пойманным посередине, так как использование https предотвращает это или смягчает его. Мне действительно интересно, как пользователь пытается обновить то, что не принадлежит им.restful Web Parameter Tampering

Как вы предотвращаете подобные атаки в мире покоя? Web Parameter Tampering

ответ

4

Проблема, с которой вы столкнулись, называется authorization. Как только пользователь authenticated, это разрешение, которое предоставляет ему разрешения на доступ к определенным ресурсам. Авторизация в сценарии REST должна быть реализована на стороне сервера.

Предположим, пользователь Bob пытается изменить ресурс покупки, отправив аутентификацию (например, используя базовый HTTP-аутентификатор, авторизованный сеансовый файл cookie и т. Д.). Запрос POST на конечную точку /purchases/1 (поставляется с соответствующей полезной нагрузкой). Обязанностью сервера является проверка того, разрешено ли Бобу изменять объект (например, проверяя, действительно ли это был Боб, совершивший покупку). Если разрешение предоставлено, сервер продолжает операцию и отвечает 2xx success HTTP status code. В противном случае будет возвращен код ошибки 403, сообщающий, что пользователь не имеет права изменять данную покупку.

После установления механизмов авторизации возникает другая проблема: пользователи публикуют вредоносный ввод, чтобы попытаться обмануть и преодолеть механизмы авторизации. Это касается очень широкой темы безопасности веб-приложений. Существует много известных атак на webapps (например, injection attacks) и еще больше способов защиты от них. Тестирование приложений для уязвимостей безопасности называется penetration testing. Стоит отметить, что есть автоматические инструменты, которые выполняют такие тесты (а также автоматизированные инструменты для выполнения таких атак).

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

Ссылка

[изменить] РЕСТ безгосударственность

API, не зависит от состояния, когда нет состояния приложения не хранится на сервере (в отличие от ресурса государственного). Click here для приятного объяснения разницы между этими двумя. Там много дискуссий о безгражданстве (особенно в контексте аутентификации) - найдите SO или Google.

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

Но не бойтесь - на практике большинство систем там хранят хотя бы часть состояния приложения на сервере (AFAIK Google делает это в своих системах). Так как указано в this answer:

«REST не религия (...), вы должны следовать только догматам REST, насколько они имеют смысл для вашего приложения»

+0

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

+0

Как можно отдохнуть без гражданства? –

+0

@workmonitored Смотрите мой обновленный ответ – jannis