Глосарій
Словник веб-розробника
Визначення технічних термінів з PHP, DevOps, MySQL та AI — з прикладами коду та поясненнями простою мовою.
228
термінів
47
літер
O
OAuth 2.0
OAuth 2.0 — протокол авторизації, який дозволяє застосунку отримати обмежений доступ до ресурсів користувача на іншому сервісі без передачі пароля. «Увійти через Google» — це OAuth 2.0.Основні роліResource Owner — користувач, власник данихClient — ваш застосунок, що запитує доступAuthorization Server — сервер (Google, GitHub), що видає токениResource Server — API, що зберігає дані користувачаFlows (Grant Types)Authorization Code + PKCE — найбезпечніший, для веб і мобільних застосунківClient Credentials — для машинного спілкування (без участі користувача)Implicit — застарілий, не рекомендуєтьсяOAuth vs OpenID ConnectOAuth 2.0 дає авторизацію (доступ до ресурсу). OpenID Connect (OIDC) — надбудова над OAuth, що додає автентифікацію (хто ти є). OIDC повертає ID Token (JWT) з даними користувача.
Observer Pattern
Observer (спостерігач) — патерн, в якому об'єкт-суб'єкт веде список залежних об'єктів-спостерігачів і автоматично сповіщає їх при зміні свого стану. Основа систем подій.УчасникиSubject (Publisher) — зберігає список спостерігачів, надає методи subscribe / unsubscribe / notifyObserver (Subscriber) — реалізує метод update(), який викликається суб'єктомДе зустрічаєтьсяDOM-події у браузері (addEventListener)Системи подій у фреймворках (EventEmitter в Node.js)Reactive Programming (RxJS Observable)Message bus всередині застосункуObserver vs Pub/SubУ Observer суб'єкт знає про своїх спостерігачів напряму. У Pub/Sub між ними є посередник (брокер): видавець і підписник не знають одне про одного.
OPcache
OPcache — вбудоване розширення PHP, яке кешує скомпільований байткод скриптів у shared memory. Замість того щоб парсити і компілювати один і той самий файл при кожному запиті, PHP робить це один раз — і далі читає результат із пам'яті. Типовий виграш: 2–5× вища пропускна здатність без жодних змін у коді.Як це працюєКоли PHP вперше виконує скрипт, він перетворює вихідний код у байткод (opcode) і записує його в спільну пам'ять процесу. Усі наступні запити — навіть від різних воркерів — читають уже готовий байткод напряму, повністю минаючи лексер, парсер і компілятор.Ключові директивиopcache.enable = 1 — вмикає розширення (за замовчуванням увімкнено в більшості дистрибутивів)opcache.memory_consumption = 128 — розмір пам'яті під кеш у МБ; для великих проєктів ставте 256+opcache.max_accelerated_files = 10000 — максимальна кількість файлів у кешіopcache.validate_timestamps = 0 — вимикає перевірку часу зміни файлів; обов'язково для продакшну, дає найбільший приріст швидкостіopcache.revalidate_freq = 60 — якщо validate_timestamps = 1, перевіряти зміни раз на N секундІнвалідація кешуНа продакшні з validate_timestamps = 0 OPcache не стежить за змінами файлів, тому після деплою кеш треба скидати вручну. Найчистіший спосіб — рестарт PHP-FPM. Якщо це неможливо, викличте opcache_reset() або opcache_invalidate($path, true) зі скрипта, що запускається після деплою.
Open Redirect
Open Redirect — вразливість, при якій застосунок перенаправляє користувача на довільну зовнішню URL без перевірки. Зловмисник створює посилання виду https://trusted.com/redirect?url=https://phishing.com — жертва бачить довірений домен і переходить на шкідливий сайт.
Типове використання в атаках
Фішинг — посилання виглядає довіреним
OAuth redirect hijacking — підмінити redirect_uri у OAuth flow
Обхід referer-перевірок
Захист
Whitelist дозволених URL або доменів для редиректу
Не приймати зовнішні URL у параметрах редиректу
Порівнювати host URL з поточним доменом перед редиректом
// Перевірка: тільки відносні URL
function safeRedirect(string $url): string {
$parsed = parse_url($url);
// відхилити якщо є scheme або host
if (isset($parsed['scheme']) || isset($parsed['host'])) {
return '/'; // fallback на домашню
}
return $url;
}
OpenAPI / Swagger
OpenAPI — стандарт машинозчитуваного опису REST API у форматі YAML або JSON. Swagger — набір інструментів навколо цього стандарту (Swagger UI, Swagger Editor). Документація, що не застаріває, бо генерується з коду або є джерелом правди для генерації коду.Що даєІнтерактивна документація (Swagger UI) — можна тестувати endpoint-и прямо в браузеріГенерація клієнтських SDK — автоматичний TypeScript/Python/PHP-клієнт з описів APIВалідація запитів і відповідей на відповідність специфікаціїДоговір між frontend і backend — спочатку описуємо API, потім реалізуємоМінімальний прикладpaths:
/users/{id}:
get:
summary: Отримати користувача
parameters:
- name: id
in: path
required: true
schema:
type: integer
ORM
ORM (Object-Relational Mapping) — прошарок між кодом і базою даних, який дозволяє працювати з таблицями як з об'єктами. Замість SQL-запитів ви оперуєте класами та методами, а ORM генерує SQL сам.Переваги і цінаORM прискорює розробку, захищає від SQL-ін'єкцій і дозволяє легко змінювати СУБД. Ціна — накладні витрати та ризик неефективних запитів. Класичний приклад: N+1 проблема, коли ORM робить окремий запит для кожного запису замість одного JOIN.Два патерниActive Record — модель сама знає, як зберегти себе в БД. Код виглядає як $user->save(). Простіший, але жорсткіше зв'язує модель із персистентністюData Mapper — модель і логіка збереження розділені окремим класом (Repository/Mapper). Складніший, але гнучкіший для великих проєктів
OWASP Top 10
OWASP (Open Web Application Security Project) — некомерційна організація, що публікує стандарти веб-безпеки. OWASP Top 10 — щорічний список найпоширеніших вразливостей. Стандарт де-факто для аудиту безпеки застосунків.Top 10 (2021)Broken Access Control — доступ до даних інших користувачівCryptographic Failures — слабке шифрування, витік паролівInjection — SQL, NoSQL, OS, LDAP ін'єкціїInsecure Design — помилки на рівні архітектуриSecurity Misconfiguration — дефолтні паролі, відкриті портиVulnerable Components — застарілі залежності з вразливостямиAuthentication Failures — слабка автентифікаціяSoftware Integrity Failures — небезпечний CI/CD, оновлення без перевіркиLogging Failures — відсутність моніторингу атакSSRF — Server-Side Request Forgery