fbpx

Авторизація: Безпека.

Що мені нині писати стало не про що. І ось вирішив написати статтю про авторизацію. Так, тут, напевно,
нічого цікавого… Але тут дуже багато нюансів з безпеки.
Ну щож ближче до справи. На початку я вам наведу псевдокод авторизації:
Знаходимо id користувача в бд…
Якщо (в куки є ім’я і пароль, то { пароль=куки_пароль; ім’я=куки_имя; записываем_куки; функция_отображения_страницы; }
інакше Якщо (введенный_пароль правильний) { виводимо сторінку користувача… } інакше ошибка_авторизации.
Є один дуже поширений метод злому облікового запису. На комп’ютері жертви копіюємо куки, замінюємо свої куки і
заходимо під іменем користувача. Але є дуже хитрий спосіб захисту від цього. При запису імені і пароля у кукі
ми також генеруємо випадкове число (rand()) і записуємо його в кукі та в базу даних. При вході користувача
порівнюється номер куки і номер в бд. Якщо вони рівні, то користувач заходить в свій аккаунт (+ генерується нове число).
Коли хакер вкрав куки (і якщо користувач після цього заходив в свій аккаунт) він не зможе зайти тому, що номер
не буде збігатися. Але якщо користувач не входив після крадіжки cookie? Тоді хакер зможе без проблем зайти.
Є ще один спосіб. При запису в кукі записується IP користувача. При вході виглядає IP в куках. Якщо воно дорівнює IP
користувача, то тоді з’явиться сторінка. Тоді хакер теж ніяк не зможе зайти на сайт. Але є одне АЛЕ. Він може
яким-небудь способом здогадатися, що в якийсь змінної в куках зберігається IP і помістити свій (ну, звичайно, IP зашифрований,
але він сам може легко шифрувати його, наприклад, функцією md5. Але ви можете відразу пароль шифрувати декількома функціями.
Наприклад md5(base64_encode(md5(base64_encode(рядок)))). Хакеру буде важко дізнатися, як саме зашифровано. А хакери, запам’ятайте,
дуже ліниві. Вони витрачати час заради цього не будуть.). А ще, якщо хакеру моторошно пощастить, у нього виявиться той самий IP. Але
тут вже треба мати саму рідкісну удачу…
Я вам раджу використовувати обидва ці методу (врахуйте директиву register_globals[1]). Записуйте їх обидва в
куки та порівнюйте їх обидва!
Але, а якщо хакер знає на якому сайті побудована велика база даних з хэшированными паролями (або вона є у нього самого)?
Він зможе туди вписати хеш-суму і видасть йому пароль. Щоб захиститися від цього існує таке поняття як “сіль” (або “сміття”).
До хеш-суми приписується якийсь безладний текст (наприклад,rese352sg22p). Тоді коли хакер введе хеш-суму він отримає
неправильний пароль (або взагалі нічого не отримає). А ви коли будете перевіряти пароль куки прибирайте всю сіль.
Удачі!
Стаття на сайті ForWeb.
[1] register_globals.