berezuev
@berezuev
#define TRUE FALSE

Как сделать csrf защиту формы на стороннем ресурсе?

В общем, есть некий виджет, который будет встраиваться в сторонние сайты и отправлять Ajax post на наш api. Публичная часть api-ключа будет висеть на клиенте. Как сделать так, чтобы злоумышленник не смог со стороннего ресурса (или просто curl’ом) имитировать эти запросы? Referer легко подделывается, остаётся только csrf. Можно ли это реализовать для стороннего ресурса?
  • Вопрос задан
  • 750 просмотров
Пригласить эксперта
Ответы на вопрос 2
e-antonov
@e-antonov
Я правильно понимаю, что у вас есть подключаемый виджет, из которого любой юзер БЕЗ авторизации может post'ить данные к вашему бэкенду и вы задаетесь вопросом как же сделать так, чтобы только из тех мест, где подключен виджет можно было постить, а из других нет?

Если я понял правильно, то может вам следует подумать о каком-то whitelist списке разрешенных ресурсов из которых можно постить?

Еще ожно было бы наверное запрашивать csrf токен у бэкенда при генерации самого виджета и при сабмите валидировать. Но кто тогда помешает стороннему "злоумышленнику" попросить таким же образом этот токен у бэкенда?

P.S. ну и соответственно как-то сам виджет неплохо бы авторизовывать. Можете посмотреть это на примере какого-нибудь подключаемого виждета комментариев, например disqus. Вы регистрируетесь в системе и помимо всего прочего вам выдают реквизиты, которые необходимы для подключения скрипта. Тем самым дискус всегда понимает что с вашего сайта, который вы зарегистрировали в системе, с вашими реквизитами, которые вам эта система выдала приходят валидные комментарии.
Ответ написан
@vshvydky
может стоит отдавать ваш виджет через iframe и генерировать разовый ключ для валидации после отработавшего фингерпринта?
это конечно не будет спасать от всего, но любители CURL пойдут курить.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы