Назад | Перейти на главную страницу

SSL Everywhere или HSTS в системе Magento и избегайте HTTP

Я хочу установить платформу Magento на сервере. Я использую Centos и nginx и хочу перенаправить все http-соединения на https, которые я уже установил в nginx domain.conf, http https-перенаправление, и это работает нормально, но как я могу быть уверен, что все соединения защищены. Я спрашиваю, потому что, если я использую также HSTS, самым первым запросом может быть http.

Обзор моего файла example.org.conf

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.org www.example.org;
    return 301 https://$server_name$request_uri;
}

server {
    #listen 80 reuseport;
    #listen 443 http2 ssl reuseport;
    listen 443 ssl;
    #listen 80;
    ...
    ...
}

Итак, еще раз, как я могу быть уверен, что все соединения защищены? Вторая причина, по которой я спрашиваю, заключается в том, что я заметил, что если я открываю домен на смартфоне с низкой скоростью мобильных данных, он начинается с небезопасного URL-адреса на секунду, или я просто ошибаюсь?

Надеюсь, ты дашь мне совет

Без HSTS вы не можете предотвратить, что первое соединение, инициированное клиентом, будет использовать HTTP вместо HTTPS, так как вы не можете контролировать, какой протокол запрашивает пользователь. Редирект становится активным только после первого запроса.

С HSTS ситуация сложнее:

  • Если вы находитесь в списке предварительной загрузки HSTS в браузере (чего, конечно же, нет), он всегда должен использовать только HTTPS для подключения к вашему домену.
  • В противном случае самое первое соединение, которое браузер устанавливает с вашим доменом, все равно может быть HTTP, но с первым ответом HTTPS, который вы отправляете после перенаправления, вы можете установить заголовок HSTS, а после этого момента клиент должен используйте HTTPS только на время, указанное в заголовке, как для текущего, так и для будущих сеансов.
  • Если у вас есть злоумышленник, изображающий MITM перед первым подключением, HSTS не защищает вас, поскольку он может просто отфильтровать заголовок. Если атака произойдет после установки заголовка HSTS, сделать это будет намного сложнее.

Как обеспечить безопасность всех подключений

Ответ: Вы постоянно перенаправляете все соединения 301 https, поэтому нет никаких шансов, что ваш сервер примет незащищенное соединение.

Вы можете проанализировать журнал Nginx Access, чтобы понять, сколько запросов перенаправляет с HTTP на https.

В вашей конфигурации необходимо изменить некоторые вещи в соответствии с рекомендациями Nginx.

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    server_name example.org www.example.org;
    return 301 https://$server_name$request_uri;
}

server {

    listen 443 ssl;

    server_name example.org www.example.org;

    ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
    add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
}