Мы часто получаем вопросы о разработчиках, желающих создать приложение, которое должно безопасно извлекать данные с серверов, которые они размещают. Эти серверы обычно размещаются за брандмауэром и легко доступны для клиентов в той же сети, что и сервер. Сегодняшний пост расскажет вам о различных вариантах создания безопасного приложения, которое работает с этими серверами.

Делаем ваш сервер доступным

В силу того, что платформа Freshworks является платформой на основе подписки, она поддерживает подключение вашего приложения только к службам, доступным через Интернет. Вот обзор безопасного подключения вашего сервера к Интернету.

  1. Настройте шлюз NAT для пересылки запросов на ваш сервер из Интернета.
  2. Настройте правила брандмауэра, чтобы разрешить только HTTPS-трафик из Интернета на один единственный порт, связанный с вашим сервером.
  3. Настройте домен для своей службы с сертификатом SSL от известного поставщика.
  4. Настройте DNS-маршрутизацию для своего сервисного домена.

Этот видеоурок даст вам общее представление о том, что требуется.

Наконец, вы должны добавить уровень аутентификации перед своим сервером, чтобы отклонять запросы, которые не могут быть аутентифицированы.

Примечание. Подробное описание того, как это достигается в конкретных сценариях, выходит за рамки этой публикации.

Создание приложения, которому можно доверять

Хотя ваше приложение отправляет запросы на сервер по протоколу HTTPS, оно также предоставляет некоторую форму аутентификации для каждого запроса, чтобы сервер мог доверять этим входящим запросам. Вы можете защитить свои запросы с помощью следующих параметров.

  1. Общий секрет (сложность — низкая, безопасность — умеренная)

Уникальный секрет, известный только вашему серверу и приложению, встроен в заголовок каждого запроса, отправляемого на ваш сервер.

2. JWT(сложность — средняя, ​​безопасность — высокая)

Токен генерируется с использованием секрета и внедряется в запрос. Токен имеет короткий срок годности и становится недействительным в течение нескольких секунд после создания.

Секрет можно представить вашему приложению двумя разными способами.

  1. server.js: определите секрет как константу в файле server.js вашего приложения и отправляйте запросы на ваш сервер только из этого бессерверного приложения. >
  2. iparams.json (рекомендуется): определите секрет как безопасный параметр установки для вашего приложения и вводите его при установке или обновлении приложения.

Следующий фрагмент кода демонстрирует, как вы можете использовать общий секрет в запросе GET, сделанном на ваш сервер.

Вы также можете пойти дальше, следуя нашему руководству по использованию JWT-аутентификации между вашим приложением и вашим сервером.

Метод iparams.json не только более безопасен, но и позволяет изменить секрет без повторного развертывания приложения.

Примечание. Мы не рекомендуем хранить и использовать общие секреты непосредственно в интерфейсном приложении, так как это сделает их доступными для любого агента, имеющего доступ к вашей учетной записи Freshworks.

Как насчет белого списка IP-адресов в качестве меры безопасности?

Мы не рекомендуем белый список IP-адресов как достаточную меру безопасности, поскольку он страдает от следующих эксплойтов:

  1. Любой может написать свое приложение, запустить его в нашей инфраструктуре, маскируясь под ваше собственное приложение, и получить доступ к вашим серверам.
  2. Для подделки IP-адресов через TCP-соединения доступны известные меры грубой силы.

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