ІСТОРІЯ OAUTH: ВІД ПАРОЛІВ ДО ГЛОБАЛЬНИХ СТАНДАРТІВ
Ви бачите це щодня. Ви натискаєте «Увійти через Google» або «Увійти через GitHub». Ви не вводите пароль. Ви миттєво потрапляєте на сайт.
Це працює завдяки OAuth. Це глобальний стандарт безпеки. Але спочатку все було інакше. Він еволюціонував, щоб вирішити масштабні проблеми.
Проблема з паролями
На ранніх етапах ви створювали новий пароль для кожного вебсайту. Це спричиняло три великі проблеми:
- Люди використовували один і той самий пароль усюди. Якщо один сайт зазнавав витоку, під загрозою опинялися всі акаунти.
- Люди забували паролі. Вони витрачали більше часу на натискання «забули пароль», ніж на користування інтернетом.
- Вебсайти бачили ваш пароль у чистому вигляді. Якщо сайт зламували, ваш пароль опинявся у руках зловмисників.
Еволюція безпеки
Basic Auth: Ви надсилали своє ім'я користувача та пароль із кожним запитом. Якщо ви не використовували HTTPS, хакери могли бачити все.
Session Cookies: Ви входили в систему один раз і отримували ID сесії. Це було краще, але куки (cookies) можна викрасти за допомогою таких атак, як XSS або CSRF. Крім того, один сайт не міг використовувати ваш логін для взаємодії з іншим сайтом.
API Keys: Ви надавали вебсайту спеціальний ключ. Це було краще, оскільки ви не надсилали свій пароль. Однак API-ключі часто мають занадто великі повноваження. Якщо ви надаєте API-ключ додатку, цей додаток може мати можливість читати ваші електронні листи, надсилати повідомлення та видаляти ваш акаунт. Це схоже на те, якби ви дали ключі від машини паркувальнику в готелі, але цей ключ також відкривав би ваш будинок.
Рішення OAuth: Ключ для паркувальника (Valet Key)
OAuth змінив правила гри. Замість того, щоб надавати свій пароль, ви надаєте «токен». Уявіть, що це ключ для паркувальника (valet key). Ключ для паркувальника дозволяє водію припаркувати вашу машину, але не дозволяє йому відкривати багажник або заходити у ваш будинок.
Як OAuth працює на практиці:
- Ви хочете скористатися Canva і підтягнути фотографії з Google.
- Canva запитує дозвіл у Google.
- Google запитує вас: «Чи може Canva переглядати ваші фотографії?»
- Ви відповідаєте: «Так, але тільки переглядати. Не дозволяйте їм нічого видаляти».
- Google надає Canva конкретний токен.
Canva ніколи не бачить вашого пароля Google. Навіть якщо хакер викраде цей токен, він зможе лише переглядати фото протягом короткого часу. Він не зможе змінити ваш пароль або переказати ваші гроші.
Сучасна безпека: PKCE
Мобільні та вебдодатки мають слабке місце. Вони не можуть надійно приховувати секрети. Щоб виправити це, ми використовуємо PKCE (Proof Key for Code Exchange).
Це працює як система резервування:
- Додаток створює секретний код (verifier).
- Додаток надсилає хешовану версію цього коду (challenge) до Google.
- Коли додаток запитує токен, він надсилає оригінальний секретний код.
- Google перевіряє, чи збігається код із challenge.
Якщо вони збігаються, Google розуміє, що це той самий додаток. Якщо ні — Google блокує запит. Це заважає хакерам викрасти ваш код авторизації.
Дорожня карта OAuth
- 2007 (OAuth 1.0): Дуже складний і використовував важку математику.
- 2012 (OAuth 2.0): Швидший і простіший. Використовував токени та вимагав HTTPS.
- 2016 (OAuth 2.0 + PKCE): Додав безпеку для мобільних та сучасних вебдодатків.
- 2023 (OAuth 2.1): Новий золотий стандарт. Він усуває старі, небезпечні методи.
Головний урок: Ніколи не давайте свій пароль іншому додатку. Надайте їм обмежений квиток, термін дії якого закінчується. Ви залишаєтеся під контролем.
Source: https://dev.to/gophernment/oauth-elaaaebbprawatisaastr-cchaakrhasphaan-suumaatrthaanolk-16b4
