Що таке міжсайтові скрипти?

click fraud protection

Один з найпоширеніших класів уразливості на веб-сайтах називається «Міжсайтові скрипти» або «XSS». Уразливості XSS – це те, де користувач може викликати виконання JavaScript. Існує ряд різних варіантів уразливості XSS з різним ступенем тяжкості.

Проблема з тим, що зловмисник може виконувати JavaScript під час сеансів інших користувачів, полягає в тому, що зловмисник може зробити будь-що з веб-сайтом, який бачать жертви. Це включає переспрямування жертв на зовнішні веб-сайти, крадіжку маркерів аутентифікації та моніторинг деталей платежу.

Найсерйознішою формою уразливості XSS є «збережені» або «постійні» міжсайтові сценарії. зловмисник може створити корисне навантаження XSS, а потім надіслати його, щоб він зберігався в базі даних. Завдяки збереженому в базі даних експлойту XSS він може впливати на інших користувачів протягом тривалого періоду часу.

Іншою формою міжсайтових сценаріїв є «Відображений», цей тип не зберігається в будь-який момент, натомість корисне навантаження включається в браузер. Як правило, цей тип XSS є частиною фішингових атак, коли зловмисник намагається обдурити жертву, щоб вона натиснула шкідливе посилання.

Як правило, у більшості атак XSS корисне навантаження в певний момент надсилається на сервер, але деякі атаки є суто на стороні клієнта, ніколи не надсилається на сервер і натомість впливає лише на стороні клієнта JavaScript. Це називається XSS на основі DOM, оскільки він залишається в об’єктній моделі документа JavaScript, або DOM. Цей тип уразливості особливо важко ідентифікувати й усунути, оскільки сервер ніколи не бачить експлойтів, а тому не може бути зареєстрований.

Історично метод запобігання уразливостям XSS полягав у фільтрації всіх даних, поданих користувачами, за допомогою списків блоків для відхилення будь-яких повідомлень із значущими символами або словами в JavaScript. Це, як правило, призвело до гонки озброєнь у пошуку обхідних засобів для фільтра, а також унеможливило деякі законні подання користувачів. Правильним рішенням є використання сутностей HTML для кодування даних, поданих користувачем. з увімкненими модулями сутностей HTML символи автоматично кодуються у формат, у якому браузер знає, щоб відображати їх як правильні символи, але не розглядати їх як код.