Я пытаюсь найти хороший способ предотвратить CSRF в виджете javascript, встроенном в веб-сайты клиентов.
Виджет позволит конечным пользователям делать запросы к учетным записям наших клиентов через JSONP на сервер PHP, который проксирует эти запросы в наш (непубличный) API.
На данный момент я не придумал надежного способа убедиться, что все запросы поступают только с веб-сайтов наших клиентов. Некоторые идеи, которые у меня были:
- Токены, созданные на стороне сервера и переданные обратно вместе с каждым последующим запросом JSONP (хотя я не уверен, как аутентифицировать первоначальный запрос, поскольку первый токен будет доступен для чтения в JS, и любой может запросить «следующий» токен)
- Проверка заголовка Referer (ненадежный, может быть подделан или просто не пропущен браузером)
- Использование SSL (конечно, поможет, но не решит проблему CSRF)
Это вообще возможно? Я наткнулся на виджет Fotomoto, который, кажется, обеспечивает тот же тип функций, который мы ищем, но я не уверен, как они это делают.