Вебмайстер
Яндекс для вебмайстрів
Як Яндекс індексує сайти
Сайт на сторінці результатів пошуку
Сервіс «Яндекс.Вебмайстер»
Налаштування індексування
Вміст сайту
Сайт у результатах пошуку
Безпека сайтів
Сервіси Яндекса на вашому сайті

XSS (міжсайтовий скриптинг)

Cтаття "Забезпечення безпеки веб-сайтів" надана Sophos Plc і SophosLabs.

Грудень 2007 р.

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

Багато сайтів зберігають імена всіх відвідувачів у базі даних, щоб мати можливість відображати їх під час введення відповідних користувачів. Зловмисник може створити підробний обліковий запис, розмістивши при цьому в полі імені шкідливий код. Подібні атаки зазвичай реалізуються за допомогою шкідливих скриптів на мові Javascript, які потім завантажують контент з іншого веб-сайту. Мається на увазі, що в базі даних зберігається ім'я користувача, але насправді буде збережений шкідливий код. Відповідно, якщо веб-сайт відображає ім'я користувача у верхній частині сторінки, то цей код буде виконаний. Оскільки за наявності певних умов такий код може робити практично все, що завгодно, загроза стає цілком реальною; проте, розробники часто про неї забувають. За останній час жертвами XSS-атак стали багато популярних веб-сайтів, у тому числі MySpace, Facebook, Google Mail, ВКонтакте.

Примітка. 

Розглянемо такий PHP-код:

$firstname = $_POST["firstname"]; echo "Your name: $firstname";

Після введення імені у веб-формі сайт відображає на сторінці відповідне повідомлення. Якщо зазначити у формі ім'я «Chris», то повідомлення матиме такий вигляд: «Your name: Chris».

Що станеться, якщо замість імені ввести таку конструкцію: «<script>alert („You just got hacked!“) ;</script>»?

На жаль, XSS-атакам часто важко що-небудь протиставити, оскільки для цього необхідно належним чином фільтрувати дані, що вводяться та виводяться, а також усі поля, які можуть змінюватися користувачами. Сюди відносяться дані, які отримуються із запитів GET і POST, а також запити, які повертаються з бази даних.

У PHP є цілий ряд пакетів, які допомагають фільтрувати дані, що виводяться, наприклад, CodeIgniter [15] Також у PHP є вбудована функція htmlspecialchars, яку можна використати для фільтрації даних, що виводяться.

До наступного розділу

Оцініть статтю
Дякуємо за ваш відгук!