Рекомендуем несколько видеоуроков, в которых вы узнаете, как HTTP стал основой интернета, как он работает и как его правильно использовать: https://tprg.ru/http-protocol
#сети #http
#сети #http
Сайт, на котором каждому коду состояния HTTP соответствует кот. Можно просто посмеяться с мемов, а можно использовать на своём сайте при возникновении определённой ошибки.
Сохраните себе и используйте при необходимости: https://http.cat/
#http
Сохраните себе и используйте при необходимости: https://http.cat/
#http
Race condition в веб-приложениях
Представьте ситуацию. Вася хочет перевести $100, которые есть у него на счету, Пете. Он переходит на вкладку переводов, вбивает Петин ник и цифру 100. Затем нажимает на кнопку перевода. Данные отправляются на сервер. Что нужно сделать, чтобы всё сработало правильно?
Вроде всё просто:
1. Убедиться, что у Васи достаточно денег на счету.
2. Вычесть из баланса Васи сумму, которую необходимо перевести.
3. Добавить к балансу Пети эту сумму.
4. Вывести Васе сообщение, что он молодец.
Всё бы ничего, если бы всё происходило в порядке очереди. Но сайт может обслуживать одновременно множество пользователей, а это происходит не в одном потоке. C появлением многопоточности у программ появилась интересная архитектурная уязвимость — состояние гонки (или race condition).
А теперь представим, что наш алгоритм срабатывает одновременно 3 раза (или Вася что-то перепутал, или злоумышленники задумали что-то нехорошее).
У Васи всё так же $100 на балансе, но теперь он обращается к серверу тремя потоками одновременно (с минимальным количеством времени между запросами). И все три потока проверяют, достаточно ли баланса у Васи для перевода. В тот момент времени, когда алгоритм проверяет баланс, он всё еще равен $100. Как только проверка пройдена, из текущего баланса 3 раза вычитается $100, и добавляется Пете.
Что мы имеем? У Васи на счету минусовой баланс, а у Пети + $300, хотя должно быть + $100. Это и есть типичный пример эксплуатации уязвимости состояния гонки.
Как избавить своё приложение от такой уязвимости? В этой статье рассматривается несколько вариантов: https://bo0om.ru/race-condition-ru
#бэкенд #http #многопоточность
Представьте ситуацию. Вася хочет перевести $100, которые есть у него на счету, Пете. Он переходит на вкладку переводов, вбивает Петин ник и цифру 100. Затем нажимает на кнопку перевода. Данные отправляются на сервер. Что нужно сделать, чтобы всё сработало правильно?
Вроде всё просто:
1. Убедиться, что у Васи достаточно денег на счету.
2. Вычесть из баланса Васи сумму, которую необходимо перевести.
3. Добавить к балансу Пети эту сумму.
4. Вывести Васе сообщение, что он молодец.
Всё бы ничего, если бы всё происходило в порядке очереди. Но сайт может обслуживать одновременно множество пользователей, а это происходит не в одном потоке. C появлением многопоточности у программ появилась интересная архитектурная уязвимость — состояние гонки (или race condition).
А теперь представим, что наш алгоритм срабатывает одновременно 3 раза (или Вася что-то перепутал, или злоумышленники задумали что-то нехорошее).
У Васи всё так же $100 на балансе, но теперь он обращается к серверу тремя потоками одновременно (с минимальным количеством времени между запросами). И все три потока проверяют, достаточно ли баланса у Васи для перевода. В тот момент времени, когда алгоритм проверяет баланс, он всё еще равен $100. Как только проверка пройдена, из текущего баланса 3 раза вычитается $100, и добавляется Пете.
Что мы имеем? У Васи на счету минусовой баланс, а у Пети + $300, хотя должно быть + $100. Это и есть типичный пример эксплуатации уязвимости состояния гонки.
Как избавить своё приложение от такой уязвимости? В этой статье рассматривается несколько вариантов: https://bo0om.ru/race-condition-ru
#бэкенд #http #многопоточность
🔥1
Google Chrome, Mozilla Firefox и Cloudflare начинают поддерживать HTTP/3. С ним передача данных станет быстрее, надёжнее и безопаснее. В блоге Cloudflare читайте, чем этот протокол так крут: https://tprg.ru/jAg0
Владельцам сайтов на Cloudflare достаточно ткнуть одну кнопку в панели управления, чтобы передача данных проходила с использованием HTTP/3. Остальным придётся подключать поддержку самостоятельно.
Чтобы включить поддержку HTTP/3 в Chrome Canary, надо исполнить команду —enable-quic —quic-version=h3-23. Как это сделать, описано на сайте проекта Chromium: https://tprg.ru/hSGP
#http
Владельцам сайтов на Cloudflare достаточно ткнуть одну кнопку в панели управления, чтобы передача данных проходила с использованием HTTP/3. Остальным придётся подключать поддержку самостоятельно.
Чтобы включить поддержку HTTP/3 в Chrome Canary, надо исполнить команду —enable-quic —quic-version=h3-23. Как это сделать, описано на сайте проекта Chromium: https://tprg.ru/hSGP
#http
Cloudflare организовала поддержку HTTP/3 в nginx
Cloudflare создала модуль для поддержки HTTP/3 в nginx — это должно упростить развёртывание серверов с использованием протокола нового поколения. Он сделан в форме надстройки над библиотекой quiche. Написан на языке Си.
Штатную поддержку протокола в ветке 1.17 обещают обеспечить через 6−12 месяцев. Для сборки на основе версии nginx 1.16 нужен патч и код библиотеки quiche — после этого nginx нужно пересобрать с опциями —
Про сам HTTP/3 можно почитать у нас на сайте: https://tproger.ru/news/quic-standardize-http3/
#бэкенд #nginx #http
Cloudflare создала модуль для поддержки HTTP/3 в nginx — это должно упростить развёртывание серверов с использованием протокола нового поколения. Он сделан в форме надстройки над библиотекой quiche. Написан на языке Си.
Штатную поддержку протокола в ветке 1.17 обещают обеспечить через 6−12 месяцев. Для сборки на основе версии nginx 1.16 нужен патч и код библиотеки quiche — после этого nginx нужно пересобрать с опциями —
with-http_v3_module, —with-quiche=../quiche
. Поддержка TLS должна стоять на BoringSSL, OpenSSL пока не работает.Про сам HTTP/3 можно почитать у нас на сайте: https://tproger.ru/news/quic-standardize-http3/
#бэкенд #nginx #http
Атака HTTP request smuggling
HTTP request smuggling — это атака, при которой злоумышленник вмешивается в обработку последовательности HTTP-запросов, которую получает веб-приложение.
В статье разбираемся с этой атакой:
— что происходит во время атаки;
— какие уязвимости позволяют её выполнить;
— и как её предотвратить.
Читайте на сайте: https://tproger.ru/translations/http-request-smuggling/
#http #безопасность
HTTP request smuggling — это атака, при которой злоумышленник вмешивается в обработку последовательности HTTP-запросов, которую получает веб-приложение.
В статье разбираемся с этой атакой:
— что происходит во время атаки;
— какие уязвимости позволяют её выполнить;
— и как её предотвратить.
Читайте на сайте: https://tproger.ru/translations/http-request-smuggling/
#http #безопасность
Tproger
Атака HTTP request smuggling: механизм, разновидности и защита
Разбираемся, что такое HTTP request smuggling, как происходит эта атака и как можно от неё защититься.
Сегодня рассказываем про директиву stale-while-revalidate HTTP-заголовка Cache-Control.
Суть в том, что клиент может использовать уже «протухшую» версию файла из кэша, а в это время запросить новую версию в фоне. Вроде как и ответ на запрос можно получить мгновенно и обновление кэша тоже происходит, просто с задержкой.
Вот пример от ребят из Google:
Такой заголовок они добавили для скрипта gpt.js, который используется для показа рекламы. Если файл запрашивается между 15 и 60 минутами, после того как он попал в кэш, будет использоваться устаревшая версия, но в фоне скрипт будет обновлён и закэширован для использования в будущем. Добавление заголовка ускорило начальную загрузку скрипта на 2% и на 0,5% увеличило доход с рекламы.
Директива stale-while-revalidate не входит в основной стандарт, однако уже поддерживается в FF, Chrome и Edge (в целом 67% юзеров по миру на момент публикации поста).
#http #браузеры
Суть в том, что клиент может использовать уже «протухшую» версию файла из кэша, а в это время запросить новую версию в фоне. Вроде как и ответ на запрос можно получить мгновенно и обновление кэша тоже происходит, просто с задержкой.
Вот пример от ребят из Google:
cache-control: private, max-age=900, stale-while-revalidate=3600
Такой заголовок они добавили для скрипта gpt.js, который используется для показа рекламы. Если файл запрашивается между 15 и 60 минутами, после того как он попал в кэш, будет использоваться устаревшая версия, но в фоне скрипт будет обновлён и закэширован для использования в будущем. Добавление заголовка ускорило начальную загрузку скрипта на 2% и на 0,5% увеличило доход с рекламы.
Директива stale-while-revalidate не входит в основной стандарт, однако уже поддерживается в FF, Chrome и Edge (в целом 67% юзеров по миру на момент публикации поста).
#http #браузеры
Продолжаем тему HTTP/3, потому что всем уже очень хочется, чтобы это заработало. Наши сайты просто станут быстрее работать, юзеры довольны, программисты, владельцы — все.
Попалась хорошая статейка о том, что вообще такое HTTP/3, откуда и как он появился, в чём плюсы: https://tprg.ru/YoQF
По срокам HTTP/3 хотя бы частично в реальной жизни можно ожидать в 2020 году, летом стандарт обещают окончательно утвердить, а экспериментальная поддержка есть уже почти везде. Особо никто не торопится, чтобы не накосячить в процессе.
А потом можно ждать и обновление с multipath (доступ к одному сайту по разным сетевым соединениям) и поддержкой ненадёжных или частично надёжных стримов (трансляторы всякие порадуются) и других вкусняшек.
#http
Попалась хорошая статейка о том, что вообще такое HTTP/3, откуда и как он появился, в чём плюсы: https://tprg.ru/YoQF
По срокам HTTP/3 хотя бы частично в реальной жизни можно ожидать в 2020 году, летом стандарт обещают окончательно утвердить, а экспериментальная поддержка есть уже почти везде. Особо никто не торопится, чтобы не накосячить в процессе.
А потом можно ждать и обновление с multipath (доступ к одному сайту по разным сетевым соединениям) и поддержкой ненадёжных или частично надёжных стримов (трансляторы всякие порадуются) и других вкусняшек.
#http
HTTP/3 vs HTTP/2
HTTP/3 уже на подходе, поэтому рекомендуем основательно подготовиться к переходу на него. Тут Cloudflare как раз выпустили статью, в которой сравнивают производительность HTTP/2 и HTTP/3:
https://tprg.ru/fO9J
Подробнее почитать о том, что из себя представляет HTTP/3 можно здесь. А здесь мы помогаем разобраться с тем, как самому протестировать протокол.
UPD — перевод статьи от Cloudflare на русский: https://tprg.ru/F9mJ
#http
HTTP/3 уже на подходе, поэтому рекомендуем основательно подготовиться к переходу на него. Тут Cloudflare как раз выпустили статью, в которой сравнивают производительность HTTP/2 и HTTP/3:
https://tprg.ru/fO9J
Подробнее почитать о том, что из себя представляет HTTP/3 можно здесь. А здесь мы помогаем разобраться с тем, как самому протестировать протокол.
UPD — перевод статьи от Cloudflare на русский: https://tprg.ru/F9mJ
#http
hey — тулза, с помощью которой можно замерить среднюю скорость ответа вашего сервера, проверить, не падает ли он от самых простых запросов:
https://tprg.ru/3i57
#бэкенд #http
https://tprg.ru/3i57
#бэкенд #http
IPv6 на 40% быстрее, чем IPv4
Об этом на конференции WWDC 2020 сообщили представители Apple, проведя ряд исследований. Компания также призывает разработчиков использовать новые веб-технологии, такие как HTTP/2 и TLS 1.3, ссылаясь на улучшенную производительность.
По статистике, страницы, открытые с помощью Safari и HTTP/2, загружались на 80% быстрее в сравнении с HTTP/1.1. Кроме того, 49% всех HTTPS-подключений с «яблочных» устройств приходятся на работу с протоколом TLS 1.3, и такое соединение на 30% быстрее, чем с использованием TLS 1.2.
Больше статистики по ссылке: https://tprg.ru/n60w
#сети #http
Об этом на конференции WWDC 2020 сообщили представители Apple, проведя ряд исследований. Компания также призывает разработчиков использовать новые веб-технологии, такие как HTTP/2 и TLS 1.3, ссылаясь на улучшенную производительность.
По статистике, страницы, открытые с помощью Safari и HTTP/2, загружались на 80% быстрее в сравнении с HTTP/1.1. Кроме того, 49% всех HTTPS-подключений с «яблочных» устройств приходятся на работу с протоколом TLS 1.3, и такое соединение на 30% быстрее, чем с использованием TLS 1.2.
Больше статистики по ссылке: https://tprg.ru/n60w
#сети #http
Go, Allure и HTTP, или Как мило тестировать HTTP-сервисы на Go
Все мы привыкли к лёгкому написанию тестов на Python и Java — это основные языки автотестировщиков с богатым инструментарием утилит и всего, что упрощает жизнь.
А что делать в случае с Go? Если писать тесты на других языках для Go, то возникают проблемы с ревью. Но решение есть — опенсорс-беблиотека CUTE в BDD-стиле, которая облегчает тяготы создания автотестов и упрощает переход на Go:
https://t.iss.one/go_in_action/697
#go #http
Все мы привыкли к лёгкому написанию тестов на Python и Java — это основные языки автотестировщиков с богатым инструментарием утилит и всего, что упрощает жизнь.
А что делать в случае с Go? Если писать тесты на других языках для Go, то возникают проблемы с ревью. Но решение есть — опенсорс-беблиотека CUTE в BDD-стиле, которая облегчает тяготы создания автотестов и упрощает переход на Go:
https://t.iss.one/go_in_action/697
#go #http
👍6👎1
Будущее интернета: как работают протоколы HTTP/3, QUIC и зачем они нужны
Новый стандарт протокола HTTP (обозначенный как HTTP/3), на базе которого работает всемирная паутина, находится в разработке с 2018 года и в настоящее время проходит этап рассмотрения интернет-проекта. А в этой статье вы узнаете об эволюции протокола HTTP, транспортном протоколе QUIC, преимуществах и недостатках HTTP/3 и, наконец, о возможном будущем интернета благодаря HTTP/3:
https://proglib.io/p/budushchee-interneta-kak-rabotayut-protokoly-http-3-quic-i-zachem-oni-nuzhny-2022-07-26
#http #web3
Новый стандарт протокола HTTP (обозначенный как HTTP/3), на базе которого работает всемирная паутина, находится в разработке с 2018 года и в настоящее время проходит этап рассмотрения интернет-проекта. А в этой статье вы узнаете об эволюции протокола HTTP, транспортном протоколе QUIC, преимуществах и недостатках HTTP/3 и, наконец, о возможном будущем интернета благодаря HTTP/3:
https://proglib.io/p/budushchee-interneta-kak-rabotayut-protokoly-http-3-quic-i-zachem-oni-nuzhny-2022-07-26
#http #web3
👍15
Rust: выполнение HTTP-запросов и обработка ответов с помощью reqwest
C каждым днём Rust становится всё популярнее блягодаря сочетанию возможностей, которые он даёт и простоты синтаксиса. Поэтому предлагаем вам посмотреть, как легко его можно использовать в бэкенд-разработке на примере обработки запросов и ответов:
https://nuancesprog.ru/p/16874/
#rust #http
C каждым днём Rust становится всё популярнее блягодаря сочетанию возможностей, которые он даёт и простоты синтаксиса. Поэтому предлагаем вам посмотреть, как легко его можно использовать в бэкенд-разработке на примере обработки запросов и ответов:
https://nuancesprog.ru/p/16874/
#rust #http
👍8😐3
Fluxzy — кросс-платформенное приложение для отладки HTTP
Оно способно просматривать, записывать, изменять и отлаживать HTTP-потоки. Инструмент также может похвастаться возможностью глубокого анализа веб-трафика, обеспечивая быстрое устранение неполадок и оптимизацию веб-производительности: https://www.fluxzy.io/
Интрумент бесплатный, но есть платные тарифы.
#инструменты #http
Оно способно просматривать, записывать, изменять и отлаживать HTTP-потоки. Инструмент также может похвастаться возможностью глубокого анализа веб-трафика, обеспечивая быстрое устранение неполадок и оптимизацию веб-производительности: https://www.fluxzy.io/
Интрумент бесплатный, но есть платные тарифы.
#инструменты #http
HTTP-запросы: GET, POST и другие
HTTP-запросы — основа взаимодействия между клиентской и серверной частями веб-приложений. В этой статье мы рассказали, как работать с HTTP-запросами в веб-разработке на Node.js, Python и PHP, а также привели примеры на JavaScript с использованием fetch и axios.
#http #api
HTTP-запросы — основа взаимодействия между клиентской и серверной частями веб-приложений. В этой статье мы рассказали, как работать с HTTP-запросами в веб-разработке на Node.js, Python и PHP, а также привели примеры на JavaScript с использованием fetch и axios.
#http #api
❤7👍5🔥4🤩1