Безпечна аутентифікація за логіном і паролем

Одного разу наш клієнт, фінтех-стартап, втратив доступ до панелі адміністрування: зловмисник перехопив сесію через незахищений HTTP, і пароль адміністратора зберігався в MD5. Відновлення зайняло дві доби, а витік даних клієнтів призвів до значних компенсацій. Такі інциденти — результат типових помил

Розробка та обслуговування будь-яких видів сайтів:

Інформаційні сайти або веб-програми
Сайти візитки, landing page, корпоративні сайти, онлайн каталоги, квіз, промо-сайти, блоги, ресурси новин, інформаційні портали, форуми, агрегатори
Сайти або веб-програми електронної комерції
Інтернет-магазини, B2B-портали, маркетплейси, онлайн-обмінники, кешбек-сайти, біржі, дропшиппінг-платформи, парсери товарів
Веб-програми для управління бізнес-процесами
CRM-системи, ERP-системи, корпоративні портали, системи управління виробництвом, парсери інформації
Сайти або веб-програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, конструктори сайтів, портали надання електронних послуг, відеохостинги, тематичні портали

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 2062 послуг
Безпечна аутентифікація за логіном і паролем
Простий
від 1 дня до 3 днів

Наші компетенції:

Часті запитання

Останні роботи

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1418
  • image_web-applications_feedme_466_0.webp
    Розробка веб-додатків для компанії FEEDME
    1285
  • image_websites_belfingroup_462_0.webp
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    983
  • image_ecommerce_furnoro_435_0.webp
    Розробка інтернет магазину для компанії FURNORO
    1243
  • image_crm_enviok_479_0.webp
    Розробка веб-додатків для компанії Enviok
    983
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    997

Одного разу наш клієнт, фінтех-стартап, втратив доступ до панелі адміністрування: зловмисник перехопив сесію через незахищений HTTP, і пароль адміністратора зберігався в MD5. Відновлення зайняло дві доби, а витік даних клієнтів призвів до значних компенсацій. Такі інциденти — результат типових помилок: слабке хешування, відсутність rate limiting і неправильне керування сесіями. Ми розробляємо систему входу з багаторівневим захистом, що запобігає атакам на авторизацію. Наш досвід — 10+ років у веб-безпеці, 50+ проєктів для fintech, medtech та e-commerce, де дані — головний актив.

Які загрози ми закриваємо?

  • Брутфорс: автоматизований перебір паролів. Без rate limiting зловмисник може відправити 10 000 запитів за годину. Ми обмежуємо до 5 спроб за хвилину з одного IP, після 10 невдалих — блокування на 15 хвилин.
  • Слабке хешування: MD5/SHA-1 без солі зламуються за секунди на GPU. Ми використовуємо bcrypt (cost=12) або Argon2id (t=3, m=1GB) — обидва стійкі до веселкових таблиць та parallel-атак.
  • Міжсайтова підробка запиту (CSRF): кожна форма входу захищена токеном. Laravel генерує CSRF-токен автоматично при @csrf.
  • Перехоплення сесії: тільки HTTPS, Set-Cookie з прапорами Secure, HttpOnly та SameSite=Lax.

Як ми захищаємо пароль при зберіганні?

Пароль ніколи не зберігається у відкритому вигляді. Використовуємо bcrypt з cost factor ≥ 12 або Argon2id. Не можна застосовувати застарілі алгоритми на кшталт MD5 або SHA-1 без солі: вони зламуються за хвилини на звичайному GPU. Bcrypt навмисно повільний: cost=12 дає час хешування близько 100 мс, що сильно ускладнює брутфорс. Argon2id — переможець конкурсу PHC, стійкий до атак за часом та паралельних обчислень.

// Laravel $hash = Hash::make($password); // bcrypt, cost=12 за замовчуванням // Верифікація if (!Hash::check($request->password, $user->password)) { throw new AuthenticationException(); } // Перевірка необхідності rehash (при зміні cost factor) if (Hash::needsRehash($user->password)) { $user->update(['password' => Hash::make($password)]); } 

Порівняння алгоритмів:

Алгоритм Стійкість Швидкість хешування Рекомендації
bcrypt Висока (до 2^24 раундів) ~100 ms (cost=12) Добрий для legacy-систем
Argon2id Дуже висока (захист від GPU) ~150 ms (t=3,m=1GB) Рекомендований OWASP

Чому rate limiting необхідний?

Без обмеження кількості спроб зловмисник може перебрати мільйони комбінацій за день. Ми впроваджуємо rate limiting на рівні додатку та веб-сервера. Налаштування в Laravel:

// Laravel — через RateLimiter RateLimiter::for('login', function (Request $request) { return Limit::perMinute(5)->by($request->ip()) ->response(fn() => response()->json([ 'message' => 'Забагато спроб. Повторіть через 60 секунд.' ], 429)); }); // Додатково — блокування за email+IP на 15 хвилин після 10 невдалих спроб 

Такий захід запобігає брутфорс-атакам і знижує навантаження на сервер. Ми також додаємо захист через капчу після 3 невдалих спроб. Рекомендації OWASP підтверджують ефективність такого підходу.

Як ми реалізуємо Remember me?

Функція «Запам'ятати мене» потребує обережного підходу. Не можна просто зберігати токен у plain text. Ми генеруємо 60-символьний випадковий токен, зберігаємо його SHA-256 хеш у БД з датою закінчення 30 днів.

// Створення довгоживучого токена if ($request->boolean('remember')) { $token = Str::random(60); $user->update([ 'remember_token' => hash('sha256', $token), 'remember_token_expires_at' => now()->addDays(30), ]); Cookie::queue('remember_token', $token, 60 * 24 * 30, secure: true, httpOnly: true); } 

Токен прив'язується до IP та User-Agent — при зміні параметрів сесія скидається.

JWT vs сесії: що краще і коли?

Для серверного рендерингу (SSR, MPA) — стандартні cookie-сесії. Для SPA та мобільних клієнтів — JWT (access + refresh). JWT у SPA працює швидше за часом авторизації завдяки відсутності серверного стану.

Підхід Коли використовувати
Cookie-сесії Laravel Blade, серверний рендеринг
JWT SPA (React/Vue), мобільні API
Sanctum (Laravel) SPA на тому ж домені
Passport (Laravel) OAuth2 сервер, сторонні клієнти

Безпека форми

  • autocomplete="current-password" — коректний атрибут для менеджерів паролів
  • CSRF-токен у POST-запиті
  • Однакове повідомлення про помилку для «немає користувача» і «невірний пароль» — не розкриваємо факт існування акаунта
  • HTTPS обов'язковий за рекомендаціями OWASP

Що входить у роботу

  • Аудит поточної архітектури аутентифікації та виявлення вразливостей
  • Проєктування схеми хешування, rate limiting, керування сесіями
  • Реалізація коду з інтеграцією обраних алгоритмів та токенів
  • Надання документації з архітектури та інструкції для адміністраторів
  • Навчання команди основам безпечної аутентифікації
  • Технічна підтримка протягом місяця після деплою

Наш процес роботи

  1. Аналіз: аудит поточної архітектури, виявлення вразливостей (типу протоколу, алгоритмів, конфігурації сесій).
  2. Проєктування: вибір стеку (Laravel/Firebase Auth), розробка схеми аутентифікації, узгодження з навантажувальним профілем.
  3. Реалізація: написання коду з інтеграцією хешування, rate limiting, токенів. Unit та integration тести покривають критичні сценарії.
  4. Тестування: проникнення (pen test) з імітацією атак (brute force, CSRF, session hijacking). Навантажувальне тестування до 10 000 одночасних запитів.
  5. Деплой: налаштування CI/CD, моніторинг метрик безпеки (кількість невдалих входів, блокування).

Терміни та вартість

Базова реалізація логіна/пароля з rate limiting, сесіями та remember me — від 2 до 5 робочих днів. Вартість розраховується індивідуально залежно від складності та стеку. Тому вкладення в безпечну аутентифікацію окупаються багаторазово. Замовте реалізацію під ключ — зв'яжіться з нами для оцінки вашого проєкту. Ми гарантуємо надійність і конфіденційність.

Отримайте консультацію інженера з безпеки — замовте впровадження системи аутентифікації для вашого проєкту.