TGViewer
Настя Котова // Frontend & Node.js Настя Котова // Frontend & Node.js @startpoint_dev · 1.41K subscribers
Post #72 334
📢 Сегодня обсудим одну из опасных веб-атак - CSRF (Cross-Site Request Forgery).

CSRF, или Cross-Site Request Forgery, это вид атаки на веб-приложения, при котором злоумышленник обманывает пользователя и заставляет его выполнить нежелательные действия на сайте, на котором он уже аутентифицирован (например, совершить покупку, изменить настройки аккаунта и т.д.).

Как это работает?

1. Пользователь аутентифицируется на доверенном сайте (например, на сайте банка).
2. Затем он попадает на вредоносный сайт, созданный злоумышленником.
3. Вредоносный сайт отправляет скрытый запрос к доверенному сайту, используя аутентификационные данные (куки, сессионные данные и т.д.).
4. Доверенный сайт выполняет этот запрос, считая его легитимным.

Эта атака возможна благодаря тому, что браузерные запросы автоматически включают в себя все куки, включая сессионные.

Примеры атак:

- Перевод денег: Пользователь заходит на фальшивый сайт с вредоносным кодом, который делает запрос на перевод денег со счета пользователя на счет злоумышленника.
- Смена электронной почты: Вредоносный сайт может отправить запрос на изменение контактного адреса электронной почты пользователя на сервере легитимного сайта.

Для защиты от CSRF-атак разработчику следует:

1. Использовать встроенную защиту от CSRF в вашем фреймворке, если она есть.
2. Добавлять CSRF-токены ко всем запросам, изменяющим состояние, и проверять их на сервере.
3. Использовать атрибут SameSite Cookie для сессионных куки.
4. Проверять происхождение запроса с использованием стандартных заголовков: origin и referer.
5. НЕ использовать GET-запросы для операций, изменяющих состояние. Если используете, защитите эти ресурсы от CSRF.

⚠️ Важно помнить, что XSS-уязвимости могут обойти все методы защиты от CSRF!

Подробнее про методы защиты можно почитать здесь
More from @startpoint_dev
  1. Sep 21, 2026Я к вам с новым анонсом. Этот год я заканчиваю выступлением на HolyJS! Конференция пройдёт…
  2. Sep 14, 2026В прошлый раз разбирали, зачем нужны using и await using и где они работают. Теперь посмот…
  3. Sep 7, 2026В JavaScript регулярно появляются новые возможности, и не про все из них мы вообще узнаём.…
  4. Aug 31, 2026В цикле про рендеринг мы разбирали конвейер: стили, лейаут, отрисовка, композитинг. Всё эт…
  5. Aug 24, 2026Весной мы обсуждали работу с сырыми данными: ArrayBuffer, Buffer в Node.js, SharedArrayBuf…
  6. Aug 17, 2026Когда я готовила материал для цикла про Next.js, то неожиданно для себя узнала, что в нём…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →