Pull to refresh

Уязвимость во многих reverse proxy, поддерживающих HTTP/2

Information Security *Nginx *

Опубликован новый вариант атаки "HTTP Request Smuggling", позволяющей «вклиниться» в запросы других пользователей при использовании HTTP/1.1 persistent connection между прокси (фронтендом) и бэкендом.

Продемонстрирована возможность кражи кук, авторизационных данных, подстановки стороннего js-кода и т. п.; атаке оказались подвержены Netflix, Atlassian, AWS, F5 BIG-IP…

Читать далее
Total votes 18: ↑17 and ↓1 +16
Views 5.9K
Comments 1

Серверы Google

IT-companies
Вот список имён серверов Google, использующихся для различных сервисов компании, которые вернулись в HTTP-заголовках. Не всем серверам присвоены очевидные имена, а некоторые из них могут даже показать на интересные данные (например, ctcserver используется для ещё не запущенного сервиса Google Call, на который ссылается robots.txt). Google Web Server — это изменённая версия обычного сервера Apache, запущенного на Linux.
Таблица серверов Google
Total votes 33: ↑30 and ↓3 +27
Views 13K
Comments 5

Какие бывают META теги и зачем они нужны

Website development *

META-теги


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

META-теги имеют два возможных атрибута


— <META HTTP-EQUIV="имя" CONTENT="содержимое">
— <META NAME="имя" CONTENT="содержимое">
META-теги должны находиться в заголовке HTML-документа между <HEAD> и </HEAD> (особенно это важно для документов, использующих фреймы).

Стандартом HTML 4.01 значения и имена мета-тегов НЕ оговариваются, поэтому мы будем рассматривать те значения, которые уже устоялись в интернете и используются чаще других.
подробнее о META тегах
Total votes 118: ↑89 and ↓29 +60
Views 245K
Comments 47

Убираем ненужные http-заголовки из ASP.NET

.NET *
Translation
В связи с последними инициативами Гугла, размер веб-страницы и скорость ее загрузки стали вновь актуальны. Скорость загрузки контента становится одним из критериев ранжирования результатов поиска. О GZip и Deflate сжатии написано уже много, о серверном кешировании — тоже. Поговорим о заголовках.

Итак, ваше ASP.NET-приложение, помимо прочих, шлет на клиент следующие заголовки (значения могут варьироваться):
  • Server: Microsoft-IIS/6.0
  • X-Powered-By: ASP.NET
  • X-AspNet-Version: 2.0.50727
  • (опционально) X-AspNetMvc-Version: 1.0

Убрав эти header'ы мы «облегчим» траффик всего на какие-то 100 байт для каждого запроса, но, во-первых, следует помнить, что эти 100 байт, будучи умноженными на десятки тысяч запросов к вашему серверу, сыграют ощутимую роль. Во-вторых, отсуствие header'ов усложнит жизнь злоумышленникам, которые будут лишены информации о версии вашего сервера, версии ASP.NET и о платформе вообще.

Теперь к делу.
Читать дальше →
Total votes 26: ↑15 and ↓11 +4
Views 10K
Comments 12

Мобильник HTC Desire может сообщать о себе, что он Macintosh — и сообщает…

Smartphones
Проснувшись однажды утром после беспокойного сна, Грегор Замза обнаружил, что он у себя в постели превратился в страшное насекомое

Сегодня утром я наконец набрёл на мысль зайти на сайт whatsmyuseragent.com со своего мобильного телефона HTC Desire, чтобы выяснить, какой же у его браузера идентификатор «user-agent». Приведя эту мысль в исполнение, я совершенно неожиданно увидал перед собою на экране вот какую строчку:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17

Ошеломлённый, я застыл в изумлении почти на минуту, покуда не припомнил, что в настройках у браузера есть функция «Mobile View» (с подзаголовком «Enable mobile versions of web pages»). Эту функцию я отключил (и довольно давно), так как мобильные версии многих сайтов гораздо менее функциональны, чем предназначенные для настольных компьютеров. На время включив её, я обновил страницу и получил строку, куда ближе отражающую реальность:

Mozilla/5.0 (Linux; U; Android 2.2; en-ru; Desire_A8181 Build/FRF91) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1

Кажется, это повод крепко призадуматься.

Не только сообщение о мобильности и указание «Android», но и многие прочие характеристики (операционная система, упоминаемый при ней язык, даже версия браузера) всецело переменяются после того, как отключишь режим мобильного просмотра — а меж тем отключение это бывает необычайно удобно и даже подчас необходимо. Чем больше по миру распространяются мобильники HTC (а также те другие мобильники под Android, браузеры в которых построены по этому же алгоритму), тем менее сможем все мы доверять данным статистики, собираемой по заголовкам HTTP-запросов.
Total votes 40: ↑18 and ↓22 -4
Views 303
Comments 9

Как отобразить страницу в UTF-8, несмотря на windows-1251 в HTTP-заголовке

JavaScript *
Есть у меня старый сайт на Народ.Ру, и недавно я закинул туда несколько статей — как это я теперь делаю в UTF-8. Кодировка была указана в теге meta, но, взглянув на страницы, я увидел крякозябры: «Р§С‚Рѕ-то случилось.» Оказывается, Народ.Ру шлёт HTTP-заголовок Content-Type: text/html; charset=windows-1251 и это на нём никак не отключается. Пользователь может получить читабельный текст — только если догадается вручную переключить кодировку в браузере.

Что делать? Переходить на другой хостинг? Само собой, но пока руки не дошли, хотелось добиться результата тут. Перекодировать тексты? Более достойным и интересным показалось поставить Javascript-«заплатку».

Способа переключить кодировку из Javascript я не нашёл. Остался вариант перекодировать текст скриптом, запускаемым по событию onready документа.

Итак, браузер получает текст в UTF-8, разбивает UTF-последовательности на группы по 8 бит и трактует их как коды символов в кодировке Windows-1251. Чтобы восстановить читаемость текста, нужно получить эти коды, объединить их в UTF-последовательности, а из них — восстановить Unicode-коды символов и вернуть последние посредством числовых ссылок HTML на символы. В этом деле обнаружились несколько закавык.

Читать дальше →
Total votes 24: ↑11 and ↓13 -2
Views 20K
Comments 25

Интеграция JavaScript cookies в CURL-запросы

PHP *
Sandbox
В этой статье я расскажу об одной необычной проблеме, с которой мне однажды пришлось столкнуться по роду своей деятельности. Внимание: эта статья не для начинающих. Предполагается, что читатель уже имеет опыт веб-программирования и знаком с языком PHP, библиотекой CURL и основами HTTP.

Перейдем к описанию проблемы.
Мне нужно было написать скрипт бота для одного сайта с целью автоматизации некоторого процесса из нескольких шагов, не считая авторизации.
Читать дальше →
Total votes 51: ↑40 and ↓11 +29
Views 23K
Comments 68

Передача параметров в HTTP-заголовке через запятую для Apache CXF

Java *

Предистория:


Согласно RFC-2616, HTTP header можно передавать кучей разных способов.
Мы использовали вариант КЛЮЧ = <ЗНАЧЕНИЕ-1>,<ЗНАЧЕНИЕ-2>,...,<ЗНАЧЕНИЕ-N>
Библиотека Apache CXF до версии 2.5.8 (включительно) обрабатывала такую ситуацию корректно.

Проблема:


С версии 2.5.9 Apache CXF втихаря «улучшились» и допустимыми признают только КЛЮЧ = <ЗНАЧЕНИЕ>
Ни в документации, ни на форуме апача нет ответа на вопрос:

Как разрешить Apache CXF принимать параметры заголовка HTTP-запроса (HTTP header) через запятую?

Исследование исходных кодов библиотеки указало на решение проблемы.

Решение:


В конфиге beans.xml надо добавить:

<jaxrs:properties>
     <!-- enable comma separated HTTP header values. Example" "X-ListID: 0,100,13,25,16" -->
     <entry key="org.apache.cxf.http.header.split" value="true" />
</jaxrs:properties>
Total votes 24: ↑18 and ↓6 +12
Views 5.5K
Comments 0

Ненужные HTTP-заголовки

Website development *Server optimization *
Translation
Заголовки HTTP важны для контроля, как кэш и браузеры обрабатывают ваш контент. Но многие из них используются неправильно или бессмысленно, затрачивая лишние ресурсы в критический момент загрузки страницы, и они могут работать не так, как вы думаете. В серии статей о лучших практиках сначала рассмотрим ненужные заголовки.

Большинство разработчиков знают о важных и нужных HTTP-заголовках. Самые известные — Content-Type и Content-Length, это почти универсальные хедеры. Но в последнее время для повышения безопасности начали использоваться заголовки вроде Content-Security-Policy и Strict-Transport-Security, а для повышения производительности — Link rel=preload. Несмотря на широкую поддержку в браузерах, лишь немногие их используют.

В то же время есть много чрезвычайно популярных заголовков, которые вообще не новые и не очень полезные. Мы можем это доказать с помощью HTTP Archive, проекта под управлением Google и спонсируемого Fastly, который каждый месяц при помощи WebPageTest скачивает 500 000 сайтов и выкладывает результаты в BigQuery.
Читать дальше →
Total votes 33: ↑32 and ↓1 +31
Views 35K
Comments 11

Нужные HTTP-заголовки

Information Security *Server optimization *
Translation
Наши клиенты в Fastly любят манипулировать заголовками HTTP. Подбор правильной комбинации заголовков — одна из лучших вещей, какую вы можете сделать для безопасности своего сайта и значительного вклада в его производительность.

Большинство разработчиков знают о важных и нужных HTTP-заголовках. Самые известные — Content-Type и Content-Length, это почти универсальные хедеры. Но в последнее время для повышения безопасности начали использоваться заголовки вроде Content-Security-Policy и Strict-Transport-Security, а для повышения производительности — Link rel=preload. Несмотря на широкую поддержку в браузерах, лишь немногие их используют.

В предыдущей статье мы рассмотрели ненужные заголовки. Сейчас разберёмся, какие заголовки действительно следует настроить для своего сайта.
Читать дальше →
Total votes 29: ↑29 and ↓0 +29
Views 37K
Comments 5

HTTP-заголовки для ответственного разработчика

VK corporate blog High performance *Website development *Client optimization *HTML *
Translation

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

Разработчики соединяют людей.
Разработчики помогают людям.
Разработчики дают людям возможности.

Разработчики могут создать сеть для всех, но эту способность необходимо использовать ответственно. В конце концов, важно создавать вещи, которые помогают людям и расширяют их возможности. В этой статье я хочу рассказать о том, как HTTP-заголовки могут помочь вам создавать лучшие продукты для лучшей работы всех пользователей в интернете.
Читать дальше →
Total votes 92: ↑90 and ↓2 +88
Views 79K
Comments 64

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

Information Security *Network technologies *IT Standards *
🔥 Technotext 2020
В 2019 году выявили уязвимость CPDoS Cache Poisoned Denial of Service) на сети CDN, которая позволяет отравить HTTP кэш CDN провайдера и вызвать отказ в обслуживании. Много хайпа уязвимость пока не собрала, так как не была замечена в реальных атаках. Но об одном из способов отравления кэша хочется поговорить отдельно. HTTP Method Override.


Если другие варианты эксплуатации уязвимости так или иначе опираются на баги или особенности модификации запросов посредником, то в основе варианта Method Override лежит одноименная тактика, которая не является частью стандарта HTTP, несет вместе с собой дополнительные проблемы, и которая возникла и распространилась из-за небрежного отношения к безопасности. Вот ее мы и рассмотрим.
Читать дальше →
Total votes 6: ↑6 and ↓0 +6
Views 4.1K
Comments 2

Неожиданные HTTP-заголовки

WordPress *Website development *Network technologies *Server Administration *Network standards *
Translation
Пару дней назад я ковырялся в блоге Creditkarma и заметил такой HTTP-заголовок:

X-hacker: If you're reading this, you should visit wpvip.com/careers and apply to join the fun, mention this header.

(X-hacker: если вы это читаете, то вам следует зайти на wpvip.com/careers и подать заявку, чтобы присоединиться к веселью, упомяните этот заголовок).

Первой мыслью было: «Ничего себе, когда-то программисты ввели баг тысячелетия, чтобы сэкономить несколько бит на дате, и теперь у компании публикуют целые предложения о работе в заголовке HTTP!»

Мне стало очень интересно, и я провёл некоторые исследования.
Читать дальше →
Total votes 32: ↑31 and ↓1 +30
Views 15K
Comments 10

Сервис проверки HTTP-заголовков сервера

ITSOFT corporate blog Hosting Website development *Server optimization *Server Administration *
Для любого сайта важно правильно настроить HTTP-заголовки. На тему заголовков было написано много статей. Здесь мы обобщили накопленный опыт, документацию RFC. Какие-то из заголовков обязательные, какие-то устаревшие, какие-то могут вносить путаницу и противоречия. Мы сделали пузомерку для автоматической проверки HTTP-заголовков веб-сервера. В отличии от многих других сервисов, которые просто показывают заголовки, данный сервис позволяет:

  1. задать значение типовых заголовков;
  2. добавить свои произвольные заголовки;
  3. указать версию HTTP-протокола: 1.0, 1.1, 2 (проверяет поддерживается ли HTTP/2);
  4. указать метод запроса, время ожидания и данные postdata для отправки на сервер;
  5. также пузомерка проверяет корректность ответа на запросы If-Modified-Since, If-None-Match, если в ответе сервера есть Last-Modified или ETag.
Читать дальше →
Total votes 13: ↑11 and ↓2 +9
Views 8.1K
Comments 25

HTTP headers checker

Hosting Website development *Server optimization *Server Administration *
Translation
For any site, it is important to properly configure the HTTP headers. A lot of articles have been written on the subject of headings. Here we have summarized the lessons learned, the RFC documentation. Some of the headings are mandatory, some are obsolete, some can be confusing and contradictory. We did a parsing to automatically check the HTTP headers of the web server.

Correct HTTP headers increase security and trust in the site, including from search engines, can affect the site’s position in Yandex and Google, save server resources, reduce server load, thereby increasing the server response speed, which again affects the ranking of the site in the search, save money on payment powerful hosting, which may not be required for the site when configured correctly.
Read more →
Rating 0
Views 2K
Comments 2

Памятка и туториал по HTTP-заголовкам, связанным с безопасностью веб-приложений

Timeweb Cloud corporate blog Information Security *Website development *JavaScript *Programming *


Доброго времени суток, друзья!


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


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


В практической части мы реализуем простое Express-приложение, развернем его на Heroku и оценим безопасность с помощью WebPageTest и Security Headers. Также, учитывая большую популярность сервисов для генерации статических сайтов, мы настроим и развернем приложение с аналогичным функционалом на Netlify.


Исходный код приложений находится здесь.


Демо Heroku-приложения можно посмотреть здесь, а Netlify-приложения — здесь.


Основными источниками истины при подготовке настоящей статьи для меня послужили следующие ресурсы:


Читать дальше →
Total votes 15: ↑15 and ↓0 +15
Views 16K
Comments 1

Создание внешних запросов с использованием HttpFactory (Joomla)

CMS *Website development *PHP *API *Joomla *
Translation
Tutorial

Обычно когда мы хотим сделать внешний запрос мы используем для этих целей cURL. Настройка cURL довольно громоздкая, да и в принципе проблематично держать в голове все необходимые настройки. Также есть сервера без поддержки cURL, а значит Ваш код не будет работать. В этих случаях нужен запасной вариант.

С использованием Joomla довольно легко настроить cURL и все необходимые резервные варианты подключений в одной строчке кода.

Читать далее
Total votes 8: ↑7 and ↓1 +6
Views 1.5K
Comments 4

JavaScript: об очистке данных, хранящихся на стороне клиента, по сигналу сервера и немного о карте импортов

Timeweb Cloud corporate blog Website development *JavaScript *Programming *Node.JS *


Введение


Привет, друзья!


Представляю вашему вниманию результаты небольшого исследования, посвященного очистке данных, хранящихся на стороне клиента по сигналу сервера. Речь идет об относительно новом HTTP-заголовке Clear-Site-Data. Также в этой статье мы немного поговорим про карту импортов (imports map).


Статья состоит из двух частей: теоретической и практической.


В теоретической части мы кратко рассмотрим карту импортов и более подробно Clear-Site-Data.


В практической части мы поднимем два сервера — один будет запускаться локально и, помимо прочего, обслуживать статические файлы нашего приложения, другой мы развернем на Heroku. Сначала мы запросим данные (включая куки) от серверов, сохраним эти данные в браузере с помощью трех наиболее популярных механизмов (локальное хранилище, индексированная база данных и интерфейс кеширования), затем попробуем очистить их с помощью заголовков Clear-Site-Data. Для разрешения путей импортируемых в приложении модулей мы будем использовать карту импортов.


Исходный код проекта находится здесь.

Читать дальше →
Total votes 2: ↑1 and ↓1 0
Views 6.1K
Comments 0

HTTP-заголовки в I2P. Почему HTTP-прокси предпочтительнее SOCKS

Decentralized networks *Network technologies *I2P *

HTTP-заголовки — неотъемлемая часть протокола HTTP, на котором работают почти все ресурсы в сети интернет, которые вы открываете через веб-браузер. В них передается пользовательский запрос на сервер и информация о клиенте: язык, версия операционной системы, версия веб-браузера и иногда другие идентификационные данные. Предполагается, что дополнительная информация о клиенте должна помочь серверу предоставить нужную страницу в лучшем виде: на родном языке пользователя, с адаптацией под его браузер и так далее. Если речь идет о приватности, то всё плохо. Информация об операционной системе и веб-браузере в совокупности с другими передаваемыми значениями весьма уникальна, чтобы с большой точностью отслеживать (профилировать) пользователя, который может быть не авторизован на сайте и даже регулярно чистить куки.

Читать далее
Total votes 10: ↑9 and ↓1 +8
Views 5.4K
Comments 16