Безопасно ли обслуживать jsonp, если мне требуются заголовки аутентификации? - PullRequest
3 голосов
/ 07 мая 2011

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

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

Может ли вредоносный сайт получить данные из моего сервиса через jsonp без предоставления секретного токена пользователем?

1 Ответ

0 голосов
/ 20 мая 2011

Что ж, требование настраиваемого заголовка для вызова jsonp сделает вызов jsonp бесполезным для запросов, поступающих из других доменов, поскольку ваши вызывающие абоненты не смогут установить эти заголовки.

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

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

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

...