Авторизация: Безопасность.

Что то мне нынче писать стало не о чем. И вот решил написать статью про авторизацию. Да, тут, наверное,
ничего интересного... Но тут очень много нюансов по безопасности.

Ну чтож ближе к делу. В начале я вам приведу псевдокод авторизации:

Находим id пользователя в бд...
Если (в куки есть имя и пароль) то пароль=куки_пароль; имя=куки_имя; записываем_куки; функция_отображения_страницы;
иначе Если (введённый_пароль правильный) выводим страницу пользователя... иначе ошибка_авторизации.
Есть один очень распространённый метод взлома аккаунта. На компьютере жертвы копируем куки, заменяем свои куки и
заходим под именем пользователя. Но есть очень хитрый способ защиты от этого. При записи имени и пароля в куки
мы также генерируем случайное число (rand()) и записываем его в куки и в базу данных. При входе пользователя
сравнивается номер куки и номер в бд. Если они равны, то пользователь заходит в свой аккаунт (+ генерируется новое число).
Когда хакер украл куки (и если пользователь после этого заходил в свой аккаунт) он не сможет зайти потому, что номер
не будет совпадать. Но если пользователь не входил после кражи куки? Тогда хакер сможет без проблем зайти.
Есть ещё один способ. При записи в куки записывается IP пользователя. При входе смотрится IP в куках. Если оно равно IP
пользователя, то тогда отображается страница. Тогда хакер тоже никак не сможет зайти на сайт. Но есть одно НО. Он может
каким-либо способом догадаться, что в какой-то переменной в куках хранится IP и поместить свой (ну, конечно, IP зашифрован,
но он сам может легко зашифровать его, к примеру, функцией md5. Но вы можете сразу пароль шифровать несколькими функциями.
Например md5(base64_encode(md5(base64_encode(строка)))). Хакеру будет трудно узнать, как именно зашифровано. А хакеры, запомните,
очень ленивы. Они тратить время ради этого не будут.). А ещё, если хакеру жутко повезёт, у него окажется тотже IP. Но
тут уж надо иметь самую редкую удачу...

Я вам советую использовать оба эти метода (учтите директиву register_globals[1]). Записывайте их оба в
куки и сравнивайте их оба!

Но, а если хакер знает на каком сайте построена большая база данных с хэшированными паролями (или она есть у него самого)?
Он сможет туда вписать хэш-сумму и ему выдаст пароль. Чтобы защитится от этого существует такое понятие как "соль" (или "мусор").
К хэш-сумме приписывается какой-либо беспорядочный текст (например,rese352sg22p). Тогда когда хакер введёт хэш-сумму он получит
неправильный пароль (или вообще ничего не получит). А вы когда будете проверять пароль из куки убирайте всю соль.

Удачи!

Статья на сайте ForWeb. [1] register_globals.



Отзывы и комментарии
Ваше имя (псевдоним):
Проверка на спам:

Введите символы с картинки: