Безопасно ли обращаться к локальному API с помощью http, когда общедоступной конечной точкой является https?

Контекст

У меня есть настройка сервера, которая выглядит следующим образом:

  • Сервер Apache прослушивает example.com;
  • Публичный порт 80перенаправляется на 443;
  • Публичный порт 443перенаправляется в проект Symfony;
  • На этой же машине есть локальный сервер API, написанный на Rust, который прослушиваетhttp://127.0.0.1:8030(нет поддержки SSL/TLS);
  • Локальный API может отвечать на некоторые конфиденциальные данные, такие как токены аутентификации JWT;
  • https://example.com/api — прокси к локальному серверу API(ProxyPassи ProxyPassReverse, см. приведенную ниже конфигурацию Apache), чтобы:
    • предоставить API конечному пользователю с поддержкой SSL/TLS ,
    • и иметь возможность отправлять ему запросы XHR javascript из общедоступный веб-сайт Symfony.

Примечание:Я сделал эту настройку с прокси-сервером для локального API, потому что у меня было много проблем с правилами CORS; но это не предмет моего вопроса (Я думаю, что есть гораздо, гораздо лучшие установки).

Вопрос

Можно ли считать такую ​​настройку безопасной или стоит добавить поддержку SSL/TLS для локального API?

Конфигурация Apache, немного упрощенная

<VirtualHost *:80>
   ServerName example.com
   Redirect / https://example.com
</VirtualHost>

<VirtualHost *:443>
    ServerName example.com

    DirectoryIndex /index.php

    ProxyPass /api http://127.0.0.1:8030/
    ProxyPassReverse /api http://127.0.0.1:8030/

    SSLEngine on
    SSLProtocol -ALL +TLSv1.2 +TLSv1.3
    SSLCompression off
    SSLCertificateFile /etc/letsencrypt/live/example.com/cert.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/example.com/privkey.pem
    SSLCACertificateFile /etc/letsencrypt/live/example.com/fullchain.pem

    DocumentRoot /var/www/html/symfony_project/public
    <Directory /var/www/html/symfony_project/public>
        AllowOverride All
        Require all granted
        Allow from All
        FallbackResource /index.php
    </Directory>

    ErrorLog /var/log/apache2/symfony_project_error.log
    CustomLog /var/log/apache2/symfony_project_access.log combined
</VirtualHost>
0
задан 4 October 2021 в 19:11
1 ответ

Зависит от разрешения на доступ к самому хосту. В случае, если система просто обрабатывает трафик http/https и ни один пользователь (, кроме администраторов), не может войти в систему, я бы сказал ДА, это безопасный дизайн...

Вопрос в том, КТО и КОГДА может получить доступ к конфиденциальным данным. Завершение SSL в любом случае выполняется на сервере, поэтому есть часть, где в любом случае существуют незащищенные данные(, например. ОЗУ). Таким образом, пока система не будет ограничена в доступе и незащищенные данные не покинут систему (, например. без передачи сетевой карты)данные будут в безопасности.

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

0
ответ дан 6 October 2021 в 01:08

Теги

Похожие вопросы