![]() |
https://forum.antichat.xyz/attachmen...6759780975.png
Приветствую читатель, сегодня я расскажу тебе про одну важную тему для начинающих в киберпространстве, а именно про HTTP - протокол. Ты узнаешь как он работает, а так же про самые частые атаки, и способы защиты от них. Что вообще такоеHTTP? HTTP расшифровывается как Hypertext Transfer Protocol. Это, грубо говоря, переписка между твоим браузером и серваком. Работает он по простой схеме: запрос и ответ. А теперь поподробнее:
1. URL: адрес ведущий к конкретному ресурсу в интернете. Он расшифровывается как "Uniform Resource Locator"и состоит из:
Они содержат вот такую информацию: Код:
Content-TypeКод:
Content-LenghtКод:
Accept-LanguageКод:
User-agentКод:
CookieЗаголовки довольно часто содержат уязвимости, которые можно эксплуатировать для атак по типу XSS, но не переживай - как защитить себя расскажу совсем скоро. 3. Методы: А вот это уже другая история. Если говорить простыми словами, методы - это инструкции, которые клиент дает серверу. Быстро пройдемся по ним: Код:
GETКод:
POSTКод:
PUTКод:
DELETEКод:
PATCHКод:
OPTIONS4. Статус-коды: те самые числа, которыми сервер отчитывается тебе по итогу операции. Я уже говорил про парочку из них ранее, но теперь копнем глубже: Код:
200 OKКод:
301 Moved PermanentlyКод:
302 FoundКод:
400 Bad RequestКод:
401 UnauthorizedКод:
403 ForbiddenКод:
404 Not FoundКод:
500 Internal Server ErrorКод:
503 Service UnavailableИтак, HTTP. Протокол, на котором держится весь интернет. Красиво звучит. Но по факту он - дырявый как решето. И если ты думаешь, что тут ничего такого, просто поставил SSL и все - то ты глубоко ошибаешься. К чему это я? Ну вот ты теперь знаешь, что вообще такое этот HTTP, а про потенциальные угрозы - нет. Пора исправлять. https://forum.antichat.xyz/attachmen...6759990720.png Вот что мы имеем: MITM - man in the middle, то есть буквально человек посередине. Что это значит? это когда между тобой, и например, твоим собеседником появляется посторонняя личность в виде злоумышленника, которая пускает ваш диалог через свои уши. Так, понятно, а как решать проблему будем? HTTPS - кто-то сейчас скажет. А если у тебя нет контроля над сервером? А что если ты используешь публичный Wi-Fi? Ну вот смотри, приведу пример: Допустим ты сидишь на публичном Wi-Fi.
(Этот пример я взял из статьи про MITM-атаки у своего коллеги по форуму, кто хочет копнуть глубже в тему, ознакомьтесь обязательно - MITM‑атаки: полное практическое руководство 2025). Что ты можешь предпринять: Certificate Pinning: Если ты создаешь приложение, воткни в него сертификаты. Теперь твоя приложуха будет проверять, равен ли сертификат, сервера, тому, что ты установил. Если нет - серверу будет отказано. Это конечно сложно, зато довольно эффективно. Плюс - меньше геморроя со сторонними сертификационными центрами, которые не редко грешат поддельными сертификатами. HSTS: То, что было бы славно включить на своем сайте. Он расшифровывается вот так - HTTP Strict Transport Security. Это означает, что у тебя есть неплохая возможность защитить своих пользователей. Это строгий начальник, который заставит браузер всегда использовать HTTPS для доступа на страницу, даже если пользователь случайно ввел HTTP-адрес. Ну а если ты обычный юзер, то твоими лучшими друзьями будут внимательность, и чуточка паранойи. Лучше проверь сертификаты вручную, а не просто надейся на браузер. Тщательно прошерсти детали сертификата - кто выпустил, срок действия, доменное имя. И конечно же старайся не сидеть публичных Wi-Fi. Ну а если же ситуация не оставляет выбора, и тебе очень нужно выйти в сеть, кушая в Ростиксе, - подрубай впн. Окей, с этим разобрались. Идем дальше - XSS. Что же такое XSS? Расшифровка такова - Cross-Site Scripting. Это тип уязвимости, который дает возможность плохому парню внедрить вредоносный, чаще всего JS код на твой сайт. Этот код будет выполняться в браузере пользователя, когда он посетит страницу, в которой скрипт обосновался. Теперь по порядку - как это все происходит:
Такой прикол может доставить немало проблем, например - украсть твои куки, перенаправить тебя на фиш сайт, записать нажатия клавиш, и куда хуже, закачать тебе какой-нибудь майнер. Обычно ему присваивают разные типы: Stored XSS - это когда скрипт сохраняется например, в БД и отображается всем, кто заходит на страницу. Этот сценарий происходит в худшем случае. Reflected XSS - передача скрипта через запрос (URL) и выполняется только для человека, который отправил запрос. DOM-based XSS - в этом случае код выполняется в браузере, манипулируя DOM, то есть информацией страницы. А что по защите? Самый базовый метод защиты от него - валидация. Вот здесь и кроется проблема, ведь ты думаешь, что "ну строку ввода имени можно пропустить, что в ней может быть", а по итогу оставляешь хорошую возможность для потенциального хакера. Просто следуй главному правилу: валидируй вообще все, вплоть до каждого пикселя, я не шучу. Но куда же без экранирования. Экранирование - это процесс замены определенных символов в данных на их безопасные эквиваленты. Просто если они не экранированы, браузер может прочитать не текст, как планировалось, а код. Это открывает новые возможности для атакующего. Ну вот представь, что человек вводит в поле формы: Код:
alert("какой-нибудь текст")Главное не забудь, что у каждого контекста свой метод экранирования. Для этого существуют HTML, JavaScript, URL, и CSS escaping. Что у нас тут еще... Ага CSP - тот самый фейс-контрольщик, который стоит на входе в твой сайт и проверяет, кому можно входить и что можно делать. В общем ты создаешь определенный список источников, с которых можно качать тот или иной ресурс. Если при загрузке окажется, что источника нет в этом списке - отказ в загрузке. Хорошая вещь, хоть и полностью она тебя не защитит, зато гемора хацкеру добавит. С XSS покончено, но это еще не конец, теперь на очереди SQL Injection. Представь, что ты сидишь пишешь обычную программку, которая позволяет пользователю искать товары по названию. Берешь ты значит ввод пользователя, добавляешь его в SQL запрос и отправляешь в базу данных. Все логично. Но если этот гений введет не название товара, а, "'; DROP TABLE products; --", то все, ГГ, запрос превратится в снос всей твоей таблицы с товарами, над которой ты так долго старался. И все, потому что ты не продумал, как обрабатывать ввод пользователя. Что-то напоминает... Суть проблемы в том, что ты позволяешь внедрить SQL код в запрос. И этот код будет выполнен с теми же правами, что и пользователь базы данных, под которым работает твоя программа. Это может привести к утечке секретной информации, изменению данных, удалению данных или даже получению контроля над БД. Как же защититься? Решение есть - параметризованные запросы. Они позволяют отделить данные от кода. Вместо того, чтобы напрямую вставлять пользовательский ввод в запрос, ты передаешь его как параметр. БД обрабатывает этот параметр как данные, а не как код. Это спасает тебя от выполнения опасного SQL-кода. Дальше интереснее: Cross-Site Request Forgery, можно просто - CSRF. Это такая атака, которая, вроде и кажется сложной, но по сути очень даже простая, и довольно опасная. Вот представь, ты вошел в свой банк с браузера. Все норм, ты готов заплатить за свой заказ, например на каком-нить маркетплейсе. А прикинь, что ты случайно открыл замалваренный сайт, который, используя твою уже установленную сессию, втихаря переводит деньги на счет другого человека. Причем ты даже ничего не заметил. Вот тебе и CSRF в действии. Все это из-за того, что браузер автоматом отправляет куки, связанные с твоим аккаунтом, при каждом запросе, и ему как то плевать, с какого сайта этот запрос отправляется. Если атакующий знает, как создать запрос, который будет отправлен на сервер твоего банка, и этот запрос будет содержать все нужные ему данные для перевода, он может спокойно его выполнить, используя твою сессию. Проблема тут в том, что нарушитель не может просто так получить доступ к твоим кукам. Он делает акцент на том, что браузер автоматом отправляет куки при каждом запросе, даже если запрос исходит с непроверенного сайта. Это значит, что сервер, принимая запрос, не может отличить его от запроса, отправленного тобой напрямую. Ну чтож, будем контрить. Нам нужно заставить сервер проверять, что запрос отправляешь ты, а не какой-то левый тип. И тут вступают в дело токены. Как они работают?
Ну все, ты вооружен ценной информацией, осталось напоследок по-быстрому разобраться с самим HTTPS. HTTPS - это тот же HTTP, но с шифрованием. Он использует протоколы SSL/TLS для шифрования данных. Значит данные, которые передает браузер и сервер, зашифрованы и никто не сможет их перехватить. Чтобы это все работало сервер должен иметь SSL/TLS сертификат. Этот сертификат - пруф того, что сервер не самозванец. Браузер проверит сертификат, чтобы убедиться в его валидности. На этом все. Не забывай по возможности пентестить плоды своего творения, чтобы точно быть спокойным, и не нарваться на серьезную проблему. Буду рад обратной связи в комментариях. |
| Время: 19:33 |