Ласкаво просимо до першої частини нашого курсу з освоєння моделі об’єктів документа (DOM) та розуміння її зв’язку з об'єктно-орієнтованим програмуванням (OOP). Ця серія покликана надати вам базові знання про те, як розробники взаємодіють з веб-додатками, маніпулюють DOM та визначають вразливості на стороні клієнта.
У цій частині ми розглянемо основи OOP, структуру DOM і те, як ці концепції взаємодіють у веб-розробці.
Розділ 1: Основи об'єктно-орієнтованого програмування (OOP)
Що таке OOP?
Об'єктно-орієнтоване програмування (OOP) — це парадигма, яка дозволяє розробникам представляти реальні об'єкти в коді.
Об'єкти в об'єктно-орієнтованому програмуванні (OOP) інкапсулюють дані (атрибути (attributes)) та поведінку (методи (methods)), що полегшує моделювання складних систем логічно та модульно.
Взято з цього джерела.
Ключові концепції OOP
- Об'єкт: Представляє сутність, наприклад, персонаж у грі.
- Атрибути: Ознаки об'єкта, наприклад, здоров'я, сила чи магія.
- Методи: Дії, які об'єкт може виконувати, наприклад, атакувати або лікувати.
- Інстанціація: Процес створення екземпляра об'єкта під час виконання програми (runtime).
Приклад: Пригодницька гра
Уявіть гру, в якій гравці створюють персонажів для дослідження фантастичного світу.
Кожен персонаж має такі атрибути:
- Здоров'я: Визначає, скільки шкоди персонаж може витримати.
- Сила: Описує фізичну потужність.
- Магія: Представляє магічні здібності.
Коли ви створюєте нового персонажа в грі, створюється екземпляр (instance) об'єкта персонажа з конкретними значеннями цих атрибутів. У міру розвитку гри ці атрибути змінюються динамічно, залежно від дій гравця та подій у грі.
Розділ 2: Розуміння DOM
Що таке DOM?
DOM (Document Object Model) — це програмний інтерфейс, який представляє структуру та вміст веб-сторінки у вигляді об'єктів. Він дозволяє розробникам динамічно взаємодіяти з веб-додатками та маніпулювати ними.
Життєвий цикл DOM
- Інстанціація: Коли користувач переходить на веб-сторінку, браузер створює об'єкт документа.
- Початкові атрибути: Спочатку об'єкт документа містить основні атрибути (basic attributes), такі як
document.location
, що відображає URL.
Динамічні оновлення: Коли виконуються HTTP-запити, відповіді сервера оновлюють DOM динамічно.
Ключові компоненти DOM
- Вузли (Nodes): Елементи, атрибути або текст на веб-сторінці.
- Атрибути: Властивості, такі як
location
абоtitle
, що описують документ. - Деревоподібна структура: DOM організує елементи в ієрархічному порядку, що полегшує їх перехід та маніпулювання.
Розділ 3: Взаємодія з DOM за допомогою JavaScript
Ролі HTML, CSS та JavaScript
- HTML: Визначає структуру (іменники).
- CSS: Стилізує контент (прикметники).
- JavaScript: Додає інтерактивність і поведінку (дієслова).
Маніпулювання DOM
JavaScript може:
- Отримувати дані: Отримувати інформацію за допомогою методів, таких як
document.getElementById
абоwindow.location.search
.
приклад використання window.location.search
- Змінювати контент: Динамічно змінювати елементи, атрибути або стилі.
Розділ 4: Методи маніпулювання DOM
Оновлення на стороні сервера
Сервер обробляє введення користувача та надсилає відповіді в браузер.
Ці відповіді оновлюють DOM. Наприклад, відправка форми може оновити відображені дані.
JavaScript на стороні клієнта
Скрипти на стороні клієнта дозволяють виконувати миттєві оновлення без перезавантаження сторінки. Дії користувача, як-от натискання кнопки чи введення тексту, запускають функції JavaScript, які змінюють DOM.
Розділ 5: Вступ до вразливостей на стороні клієнта
Джерела та канали
- Джерела (Sources): Місця, де введення користувача потрапляє в програму (наприклад, рядки запитів, поля форми).
- Канали (Sinks): Вразливі методи, де неперевірене введення використовується неналежним чином (наприклад,
innerHTML
,eval()
).
Загальні вразливості
- Міжсайтові скрипти (XSS): Вставка шкідливих скриптів у DOM.
Забруднення прототипів (Prototype Pollution): Маніпулювання поведінкою програми шляхом зміни її прототипів об'єктів.
Приклад: Потік шкідливого введення
- Введення користувача з
window.location.search
використовується для оновленняelement.innerHTML
без перевірки, що призводить до вразливостей XSS.
Висновок і наступні кроки
У цій частині ми встановили базове розуміння OOP та DOM, їх взаємодії та того, як вони складають основу сучасних веб-додатків. У наступній частині ми поглибимо знання в наступних напрямках:
- Складніші техніки маніпулювання DOM.
- Як HTTP-запити та відповіді формують DOM.
- Стратегії виявлення та експлуатації вразливостей на стороні клієнта.
Слідкуйте за нами, адже ми продовжуємо розвивати ваші знання в розумінні та забезпеченні безпеки веб-додатків!
Перекладено з: Understanding DOM and Cross-Site Scripting (XSS) — Part 1