2016-06-30 5 views
0

У меня есть экспресс-приложение, использующее krakenjs/lusca для защиты от атак CSRF, которые работают для всех маршрутов в моем домене. Тем не менее, у меня также есть расширение chrome, которое я хотел бы использовать в POST для приложения из любого домена. Из моих исследований, я считаю, что я должен использовать проверку подлинности на основе маркеров, поэтому у меня есть два вопроса:Значок CSRF из расширения браузера

  1. Как я должен генерировать и передавать этот маркер расширения, чтобы разрешить приложение для аутентификации запроса от расширения?
  2. Как сохранить этот токен с расширением?

Ответы, которые я нашел, имеют проблемы с api, которые сервер делает запросы, и хранилище токенов, которое полагается на локальное хранилище (которое, как я думаю, не решит мою проблему, поскольку расширение должно быть способным POST от произвольного домены). Я ценю любую помощь! Спасибо.

ответ

0
  1. Вы не можете защитить свою конечную точку для расширения на 100%, но есть некоторые способы ограничить использование другими людьми неожиданными способами. Самое простое решение - использовать JsonWebToken. Сервер будет зашифровать объект, имеющий предопределенную структуру, например {email: '[email protected]', created_date: new Date()} и отправить его обратно на расширение. Когда сервер получает запросы на расширение, он попытается дешифровать токен и посмотреть, действительно ли данные действительны (с последующим предопределенным форматом), прежде чем отвечать. Для большей безопасности вы должны выполнить некоторую проверку подлинности, например. позвольте пользователю сначала войти в Google, чтобы узнать, действительно ли они заявляют, что они до этого выдают токен ... Я предлагаю вам изучить, как потоки OAuth2 работают, чтобы получить ссылку!

  2. Есть несколько вариантов сохранения токена на расширении. Я предпочитаю хранить его на chrome.storage.sync https://developer.chrome.com/extensions/storage#property-sync. Когда сначала загружается расширение, он должен проверить, есть ли сохраненный токен и сервер вызовов, чтобы получить его, если он отсутствует.

+0

Спасибо, phnkha, я ценю это. Одно дело - я должен беспокоиться о том, чтобы разоблачить маршрут на стороне сервера, который предоставляет jwt? –

Смежные вопросы