Узнайте, как защитить свои приложения React для реального мира. Я провел годы, работая в базах кода React, где безопасность является главной заботой. Я также провел почти три года, работая в Auth0, где я многое узнал об аутентификации и безопасности. Я хотел бы научить вас всему, что я знаю, о том, как защитить ваши приложения React, чтобы вам не приходилось тратить все это время на то, чтобы разобраться в этом.
Должен ли я использовать веб-токены JSON или файлы cookie и сессии? Как правильно защитить свои данные? Что произойдет, если пользователи проверят мой код React в браузере?
Как насчет того, когда я делаю приложение с помощью Gatsby или Next?
Как насчет serverless функций?
Как насчет GraphQL ??
Что делать, если я хочу использовать стороннего поставщика аутентификации ?!
ЧТО МНЕ ДЕЛАТЬ?!?
Я научу вас всему, что знаю о безопасности приложений React.
Что в коробке?
Обновление веб-токенов JSON
Приложениям, использующим веб-токены JSON, скорее всего, необходим какой-то способ обновления этих токенов по истечении срока их действия. Поскольку время жизни токена должно быть коротким, и поскольку мы не хотим, чтобы пользователям приходилось возвращаться в наши приложения каждый раз, когда срок действия токена истекает, нам нужен способ получения нового токена по требованию. Способ сделать это - обновить токены.
В этом модуле мы рассмотрим, что такое токены обновления, как они используются для получения новых токенов доступа, где они должны храниться и многое другое.
Переключение на файлы cookie и сессии
Обычно приложения React используют веб-токены JSON для аутентификации. Этот механизм может быть особенно полезен, когда нам нужен доступ к данным из API, которые обслуживаются в доменах, отличных от домена, в котором работает наше приложение React. Однако веб-токены JSON имеют некоторые проблемы. Эти проблемы связаны с тем, что JWT часто используются для замены традиционного пользовательского сеанса, но это не то, для чего они предназначены.
В этом модуле мы расскажем, как полностью защитить наше приложение React и выразить API с помощью файлов cookie и сеансов. Мы также говорим о преимуществах такого подхода.
Сторонние провайдеры аутентификации
В разработке есть поговорка: «Никогда не раскручивай свой собственный крипто». Почему нет? Криптография сложна, тонка, ее легко ошибиться, и есть люди, которые умнее вас и меня, которые уже решили это.
То же самое можно сказать и об аутентификации в целом. Существуют сторонние провайдеры аутентификации, такие как Auth0, которые позволяют очень легко интегрировать аутентификацию в наши приложения, а также действительно безопасны, поскольку безопасность является основным направлением их бизнеса.
В этом модуле мы начнем с разговора о значении, которое предлагает Auth0, и о том, почему вы должны рассмотреть его использование. Затем мы переносим все части аутентификации и авторизации нашего приложения в Auth0.
Аутентификация и авторизация для GraphQL
Аутентификация и авторизация для приложений на основе GraphQL выполняется почти так же, как если бы мы использовали конечные точки JSON. Мы можем либо использовать веб-токены JSON, отправляя их на сервер в заголовке авторизации, либо отправлять файлы cookie и полагаться на сеансы на бэкэнде.
Есть, однако, некоторые важные различия. Самые большие изменения происходят на сервере, где нам нужны новые концепции для проверки подлинности и авторизации, прежде чем наши данные будут разрешены и отправлены обратно клиенту.
В этом модуле мы работаем с версией приложения, полностью основанной на GraphQL. Мы увидим, как отправлять JWT на сервер из Apollo на внешнем интерфейсе, а затем как авторизовать запросы на внутреннем интерфейсе, используя два метода: проверки аутентификации resolver и пользовательские директивы схемы.
Аутентификация и авторизация для GatsbyJS
Приложение Gatsby на самом деле является просто приложением React, поэтому заманчиво думать, что аутентификация и авторизация могут быть выполнены именно так, как это было бы в более «ванильном» приложении React. Фактически, это в основном то же самое, но есть некоторые важные различия из-за того, как Gatsby создает файлы для распространения.
В этом модуле мы применим аутентификацию к маркетинговой странице нашего приложения и посмотрим, как работать с соответствующими частями, чтобы все работало гладко при создании и развертывании сайта Gatsby.
Аутентификация и авторизация для Next.js
Приложения Next.js занимают особое место, когда речь заходит о том, как применять аутентификацию и авторизацию. Как мы должны думать о «вошедшем в систему пользователе» в мире рендеринга на стороне сервера? Как мы можем обслуживать ресурсы для приложения и заполнять части аутентификации во время выполнения?
В этом модуле мы создадим приложение Orbit на Next.js и увидим различные способы применения к нему аутентификации и авторизации.
Безсерверная аутентификация
Бессерверные функции дают нам возможность запускать код по требованию и платить только за то, что мы используем. Безсерверный вариант является привлекательным вариантом, поскольку он дешевле и гораздо более масштабируем, чем традиционное развертывание сервера. Если мы хотим иметь аутентифицированные функции без сервера, мы должны рассмотреть несколько вещей. Как мы управляем логинами и регистрациями? Как мы авторизуем запросы? Где мы храним секреты для проверки токенов?
В этом модуле мы перейдем к бессерверным функциям для нашего API и увидим, как полностью аутентифицировать запросы к ним. Мы будем использовать функции Netlify, которые сами основаны на AWS Lambda.
Интервью с экспертами React
Я сел поболтать с людьми в сообществе React, чтобы узнать их подлинность и безопасность для приложений React. Они делятся советами, хитростями и уроками, извлеченными из их опыта создания безопасных приложений React.
Про Пакет
Полный исходный код для всех модулей
Все 7 модулей
- Обновление веб-токенов JSON
- Использование файлов cookie и сессий
- Сторонние провайдеры аутентификации
- Аутентификация и авторизация для GraphQL
- Аутентификация и авторизация для приложений Gatsby
- Аутентификация и авторизация для приложений Next.js
- Аутентификация и авторизация для бессерверных функций
10 интервью с экспертами React, в том числе: Kent C. Dodds, Ben Awad, Eve Porcello, Jason Lengstorf, Kadi Kraman, Dave Ceddia, Chris Sevilleja, Sam Julien, and Christian Nwamba
Спасибо большое, что выкладываете огромное количество замечательных материалов!
Было бы здорово, если бы вы прикрепили к курсу также текст уроков, прилагающийся к видео.
Я и другие подписчики, неважно знающие английский, будем очень благодарны!