Подтвердить что ты не робот

Совместимость заголовка HTTP "Origin" для принудительного ограничения

Я создаю RESTful JSON api, и меня беспокоит хищение данных json и Подделка запросов на межсайтовый запрос.

Хорошим решением, которое было создано для решения обеих этих проблем, является Заголовок HTTP-заголовка. Однако я обеспокоен тем, что этот метод несовместим со всеми современными браузерами. Является ли это серьезной проблемой? Неужели HTTP-заголовок Origin бесполезен из-за проблем с совместимостью? Должно ли происхождение когда-либо учитываться при выполнении проверки ссылки HTTP?

4b9b3361

Ответ 1

Здесь приведен список совместимых браузеров и известные проблемы. Теперь это зависит от вас, если вы можете жить с этими ограничениями:

Могу ли я использовать...

Ответ 2

Это действительная забота. Кто-то может использовать более старый браузер, который не полностью поддерживает его. Также может быть ошибка в бета-версии.

Также рассмотрите возможность добавления X-Frame-Options: SAMEORIGIN в ваш JSON API, чтобы кто-то не включил ваш сайт в iframe.

Также подумайте о добавлении возвращаемых ответов JSON со специальными символами и вручную отключите их в своем декодере JSON. Так Google это делает: Почему Google добавляет while (1); к их ответам JSON?

Также подумайте, для дополнительной дополнительной защиты включить nonce для каждого запроса и подписать запрос, чтобы убедиться, что он пришел от вашего кода вместо фишингового сайта. Это похоже на то, как работает OAuth1.0. Альтернативой является создание токена для каждого сеанса, который автоматически истекает, и обновлять токен, когда это необходимо. Вот как работает OAuth2.0. Это позволяет аннулировать доступ по требованию, например, если вы обнаружили ошибку, поэтому старые клиенты должны обновить.