Необходимость обслуживать одностраничное приложение через HTTPS

В настоящее время я работаю над одностраничным приложением, которое разговаривает с REST api, размещенным на другом сервере и защищенным SSL.

Мне интересно, должен ли я устанавливать SSL-сертификат на сервере, который обслуживает одностраничное приложение, или просто установить его на сервере на задней панели, рассмотрев следующее:

  • Одностраничное приложение является конечной точкой для ссылок reset пароля с конфиденциальным токеном в строке запроса. Эти ссылки отправляются по электронной почте моим пользователям. Когда пользователь нажимает на ссылку, его браузер запрашивает одностраничное приложение. Поэтому запрос GET НЕ зашифрован и не является строкой запроса.

  • Затем приложение запрашивает у пользователя ввод нового пароля, и этот новый пароль отправляется через ajax на задний конец, который защищен SSL.

Итак, я считаю, что стоит настроить SSL для моего одностраничного приложения, чтобы обеспечить безопасность для первого рассмотрения, потому что запрос GET поэтому НЕ зашифрован, а также не является строкой запроса, а токен - конфиденциальной информацией. Тем не менее, это было бы необязательно, если бы учитывалось только второе соображение, поскольку соединение между одностраничным приложением и задним концом выполняется через SSL (поскольку одностраничное приложение использует Ajax для связи с конечной точкой, защищенной через SSL).

Я прав? Или полностью отвлекается? Спасибо!

1 ответ

Ваша интуиция верна. Единственное эффективное различие между вашим первым и вторым сценарием заключается в том, что в (1) вы отправляете конфиденциальную информацию (токен) на внешний сервер и (2) вы отправляете конфиденциальную информацию (пароль) на задний сервер. Поэтому, поскольку вы отправляете конфиденциальную информацию обоим, они оба должны быть защищены SSL.

Если сервер front-end не был защищен SSL, это возможный аспект атаки:

  • Attacker MITM - сервер внешнего интерфейса, когда пользователь отправляет токен reset в строку запроса, злоумышленник получает доступ к токену reset.

  • Перед тем, как реальный клиент может отправить запрос пароля reset, злоумышленник отправит пароль reset на сервер базы данных.

  • Атакующий отправляет новый пароль на сервер. Пароль reset - пароль, который знает злоумышленник.

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

licensed under cc by-sa 3.0 with attribution.