Comments 25
Итоговая оценка качества настройки веб-сервера 11 из 50 возможных
Как-то странно у вас с заголовком vary
.
Во-первых, он распарсился дважды, как в оригинале (lowercase), и с первой заглавной буквой с описанием, которое немного меня удивило.
Vary: сделать кэширование контента и сам контент зависимым от Cookie плохая идея потому что заголовок Cookie подвержен частым изменениям, его могут менять счётчики и прочие JS-библиотеки. Это сводит кэширование на нет. Нужно либо ту часть контента, которая зависит от Cookie подгружать через AJAX либо Cache-Control сделать private.
Почему это описание однозначно направлено на кеширование? Vary, например, рассказывает гуглоботу, что контент может меняться в зависимости от [...], и разный контент не является маскировкой (cloaking).
Вообще, очень интересный сервис. Но объяснения было бы неплохо подкрепить ссылками. Например, если бы я не читал статью от гугла про тег Vary, я бы подумал, что Vary — только для кеширования
Ошибка — Значение X-XSS-Protection не равно 1
А оно равно 1 :) Что-то не туда ваш сервис смотрит
Referrer-Policy strict-origin-when-cross-origin тоже вполне даже "секурно" а вашему сервису нравится только 'no-referrer', 'same-origin', 'strict-origin'
Это только начал отчёт смотреть :)
Вы не обрабатываете отчёты. См. developer.mozilla.org/en-US/docs/Web/HTTP/Headers/X-XSS-Protection
developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Referrer-Policy
Send the origin, path, and querystring when performing a same-origin request, only send the origin when the protocol security level stays the same while performing a cross-origin request (HTTPS→HTTPS), and send no header to any less-secure destinations (HTTPS→HTTP).
Под это HTTP→HTTP тоже подпадает. А мы исходим из того, что HTTP абсолютное зло. Его используют собянинские рукожопы для отправки персональных данных. Поэтому рукожопость лучше отсечь во всех возможных вариантах.
Продолжайте смотреть. :) Буду рад замечаниям.
Отчёты (также как и report-uri к csp ) никак не влияют ни на что. Придирка пустая. Всё что надо у меня modsecurity в связке с fail2ban отсекают и блокируют.
Вы сферического коня в вакууме рассматриваете? Или таки анализируемый сайт? Какой нафиг http->http если анализируемый сайт на https ?
Обсерватория Мозиллы разумнее всё оценивает при похожей по смыслу проверке.
2. Это завязка на другое условие. Сегодня это есть, а завтра нет. Выберите другой вариант, который не допускает передачи реферера при HTTP→HTTP и всё.
3. Приведите конкретику. Пока это сводится только к тому, что там чуть мягче, а у меня чуть жёстче. Они менее требовательны. Тут нет абсолютной истины.
По пункту 2.
Что значит сегодня есть а завтра нет? Куда https может деться? Кстати при прописанном HSTS? И добавленном домене в preload список всех браузеров.
Так что никакой угрозы "безопасности" в этом конкретном случае просто нет от strict-origin-when-cross-origin.
Я сам параноить люблю, но Вы совсем палку перегнули как в этом случае так и в снижении оценки вашего теста от отсутствия report-uri.
Также в ответе Server: Nginx без указания версии тоже нет ничего такого чтобы считать что это ужас как небезопасно и снижать оценку.
Мне кажется во всём мера должна быть.
P.S. А чем Вам cp1251 не угодил так что аж минус 3 балла? :)))) Это никакого отношения к безопасности не имеет !
Я и не говорил, что она есть. Но проверка должна мотивировать запретить использовать HTTP→HTTP, что она и делает.
Нет, ничего. Где вы увидели, что за Server оценка снижается? Везде, где снижается, там пишется. А про Server просто предупреждение подумать.
Пузомерка не только про безопасность. inline CSS-стили тоже не имеют. И до недавнего времени Яндекс.Метрика требовала unsafe-inline. Я написал в Яндекс, что это неправильно. Они месяц работали и переписывали код Метрики. Переписали и сегодня ответ прислали, что исправили.
Кодировка win-1251 плохо уже совместима с жизнью. Она не может воспроизводить все символы, что есть в UTF-8. То есть можно просто потерять часть контента при вставке откуда-то. Например у меня на сайте иконки ошибки, предупреждения — это не графические иконки, а UTF-8 символы.
UTF-8 всё ширится и ширится. Ну и что будет с графическими символами при копировании их в кодировку win-1251?
Ах да — снижать аж на целых пять пунктов из-за отсутствия Etag при абсолютно правильно работающем и выполняющем совершенно теже функции Last-modefied это вообще за гранью :)
Время относительный параметр, а ETag абсолютный.
Ну и сервис тестирует заголовки независимо друг от друга. Его задача не рейтинг ТОП-100 сгенерить, а обратить внимание. С этой задачей он и справляется раз вы внимание обратили. А дальше уже вам решать, добавлять ETag или и так сойдёт.
То что вы предлагаете выходило за рамки моего исследования. Всё же версия HTTP присутствует непосредственно в ответе сервера и указывается при отправке HTTP-запроса. И это может быть реальной проблемой, когда на хостинге нет поддержки HTTP/2, например, в штатных пакетах CentOS 7 по умолчанию.
Сейчас пробую прикрутить проверку TLS, но
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSLVERSION, CURL_SSLVERSION_TLSv1_3);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$r = curl_exec($ch);
Возвращает контент для сервера, который не поддерживает TLS 1.3.
Попробую разобраться, найти надёжный метод проверки поддержки версий TLS и добавим.
Попробую разобраться, найти надёжный метод проверки поддержки версий TLS
https://github.com/drwetter/testssl.sh или https://github.com/nabla-c0d3/sslyze но зачем когда есть тот же ssllabs и immuniweb? Всёравно специализированные сервисы лучше будут а загромождать свой сервис проверки ответа сервера ИМХО не стоит.
Для больших файлов (например, дистрибутива PhpStorm 2020.1.1 — 296 МБ) заголовки ответа сервера не выводятся.
Метод HEAD указать нужно. 296М это всё же перебор, чтобы качать такой контент.
При использовании метода HEAD
заголовки нередко отличаются от заголовков при обычном GET
-запросе. Теоретически можно разрывать соединение сразу после получения заголовка, без необходимости скачивания файла. Я в своём личном аналогичном инструменте на основе CURL-расширения PHP способа это сделать не нашёл, но, возможно, у вас доступ более низкоуровневый.
Сервис проверки HTTP-заголовков сервера