как это, без ID? А как же вы тогда ищите пользователя?Духовность™.... без id.
А зачем там секретное слово?
md5 нельзя расшифровать, его можно подобрать перебором с заранее приготовленным словарем из популярных слов (паролей). Я не думаю, что кто-то когда-то сможет подобрать строку вида "555555dcdc35687989sdcsd", не говоря уже о более сложных комбинациях логина и пароля, нежели 555.а дальше только md5 (разве его нельзя точно так же расшифровать, если поймать снифером?
Так же как по ID, просто таблице где хранится базовая информация о пользователе (логин,пароль,емейл), добавляется поле с md5(логин+пароль+секретное слово). При запросе страницы, по этому же полю делается запрос в бд и находится соответствующий ему пользователь. Опять таки не знаю насколько это рационально, но получается, что в куках хранится только это хэшированное поле.как это, без ID? А как же вы тогда ищите пользователя?
Не рационально. Это бессмысленно - хранить избыточные данные - хэш от того, что можно сгенерировать в программе. Плюс выборка по первичному ключу - не нужно на дополнительное поле ставить индекс.Опять таки не знаю насколько это рационально, но получается, что в куках хранится только это хэшированное поле.
function encryptCookie($value){
if(!$value){return false;}
$key = 'тут секретное слово';
$text = $value;
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$crypttext = mcrypt_encrypt(MCRYPT_RIJNDAEL_256, $key, $text, MCRYPT_MODE_ECB, $iv);
return trim(base64_encode($crypttext)); //encode for cookie
}
function decryptCookie($value){
if(!$value){return false;}
$key = 'тут секретное слово';
$crypttext = base64_decode($value); //decode cookie
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
return trim($decrypttext);
}
каков ваш вариант авторизации и автовхода?Понаворотят же... сессия, ключ автовхода, таблица одна, таблица другая... и этот человек еще спрашивает, зачем усложнять жизнь.
И все потому, что когнитивное бессознательное протестует против хранения хешей от пароля в куках.
Вы сами себе усложняете жизнь
ОМГ$crypttext = base64_decode($value); //decode cookie
$iv_size = mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB);
$iv = mcrypt_create_iv($iv_size, MCRYPT_RAND);
$decrypttext = mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $key, $crypttext, MCRYPT_MODE_ECB, $iv);
Пароль: 32 символа + логин: 20 символов + секретное слово 20 символов = 72 символа. Думаете надежно хранить пароль входа на сайт из 72 символов в хеше из 32?ЗЫ: хеш от пароля = хеш от набора данных, в который входит и хеш от пароля хранимый в базе
Думаю да. А что именно вас смущает?Пароль: 32 символа + логин: 20 символов + секретное слово 20 символов = 72 символа. Думаете надежно хранить пароль входа на сайт из 72 символов в хеше из 32?
где вы эти правила нашли?2. Как правило
последний ключ, который так же можно мешать в хеш
нарушается целостность данных. От того, что вы все подряд намешаете лучше никому не станет.5. Мешаем IP в хеш - тот же результат.
словечко то какое подобрали! простой пример: ajax.php - отдельный файл, который должен без дополнительных накладных расходов выдать информацию. авторизация в нем не нужна, но знать, пользователь вошел на сайт или нет - нужно. или вы запихаете туда весь движок?4. "использовать можно в любом php файле" - тут не говнокодят
6. Если вор украдет Memory
6. п.2.
интересная позиция...2. Как правило не нужно и вредно
может это и не к вам относится, но тут кто-то писал, что сессии и авторизация - разные вещи. а недостатком станет, когда сессий нет, а потом нужно делать сразу свой метод схожий по принципу с сессиями. Написать свои обработчики для сессии - это не проблема, причем все предусмотрено разработчиками.на больших сайтах очень быстро перестают использовать встроенный механизм сессий и используют свой
если честно, то я и сам не до конца понимаю, наверное первоначально было еще какое-то требование в тех. задании, которое потом куда-то и сплыло. но раз сделал, решил оставить, пока вижу только, что оно прячет ID пользователя.Зачем нужна эта ваша вторая криптованная строчка - я до сих пор не понял.
В здравом смысле. А так же в 99% ресурсов, которые требуют авторизации. Я ими пользуюсь с нескольких компьютеров без проблем и постоянных логинов. Проснитесь.где вы эти правила нашли?
Лолчто?нарушается целостность данных. От того, что вы все подряд намешаете лучше никому не станет.
Нам с вами не о чем говорить, если честнопростой пример: ajax.php - отдельный файл, который должен без дополнительных накладных расходов выдать информацию. авторизация в нем не нужна, но знать, пользователь вошел на сайт или нет - нужно. или вы запихаете туда весь движок?