Авторизація - процедура перевірки прав користувача на перегляд запитаного ресурсу з обмеженим доступом. Користувач має бути попередньо автентифікованим і надати отриманий токен. Якщо використовується механізм сесій, то роль токена відіграє ідентифікатор сесії. Альтернативу для токена авторизації становить ідентифікатор користувача. Якщо він утворений за стандартом UUID, то він має ентропію близько 128 біт, що є цілком прийнятним для більшості цивільних застосунків.
Атаки на механізм авторизації полягають або в підміні ідентифікатора сесії (про це детальніше у розділі Міжсайтовий скриптинг), або в блокуванні перевірки ідентифікатора користувача. Атака типу перебору ідентифікаторів (brute force) не може вважатись ефективною, оскільки імовірність випадкового збігу двох 128-бітних чисел становить близько 4ċ10-20, тобто для типового ПК з швидкодією біля 1 млрд операцій за секунду очікування збігу триватиме понад 500 років.
У якості прикладу розглянемо сторінку, яка відображає публікації даного користувача.
Зверніть увагу, що в адресному рядку браузера вказано параметр
?userid=a81d71ce-9260-11ed-bfca-14857fd97497
який відповідає за ідентифікатор користувача. Як можна припустити, запит до БД матиме вигляд
SELECT * FROM posts p WHERE p.id_user = '{$_GET['userid']}'
За технологією SQL ін'єкції нівелюємо перевірку шляхом утворення завжди позитивної умови.
Задля цього ми додамо до адресного рядку наступні символи: ' or 1=1 --%20.
Це призведе до того, що адресний рядок матиме вигляд
/authorization?userid=a81d71ce-9260-11ed-bfca-14857fd97497' or 1=1 --%20
(посилання активне, можна використати його, якщо не вдається набрати символи самостійно)
Authentication required
Параметр з адресного рядку підставляється в SQL команду без попередньої перевіки чи обробки. Завищені сподівання того, що дані параметри формуються системою і помилкова ситуація неможлива в принципі.
У жодному разі не підставляти дані у запит без попередньої перевірки. Структура UUID чітко відома і дозволяє перевірку регулярними виразами. Інші формати ідентифікації також мають бути перевірені в обов'язковому порядку.