Титла: php login форма Публикувано от: Engelhertz в Nov 30, 2010, 18:30 здравейте , имам един много (поне за мен ) странен проблем с логин формата ми в php . проблема е ,че след върната заявка от sql , mysql_num_rows връща резултат 0 .. защо се получава това ?
Код
Титла: Re: php login форма Публикувано от: VladSun в Nov 30, 2010, 18:47 Не виждам нещо грешно, следователно "грешката" е правилна - нямаш такива потребител/парола.
Разпечатай си заявката и виж дали в базата има такива данни. Титла: Re: php login форма Публикувано от: remotex в Dec 01, 2010, 08:37 Преполагам че не става дума за стандартната таблица в mysql.users там отдавна не са md5 hashes а се ползва напр. следния SQL: "PASSWORD(".$pass.")" - предполагам $pass е в чист текст тука.
(дали ти е 32 символа дълго полето за мд5 в чист текст или е само 16 за бинарно съхраняване) Дай резултата от : Код Също сложи една разпечатка на SQL заявката преди да я изпълниш защото имам чувството че си объркал SQL кавичките нещо с обикновени т.е. май подаваш нещо като това Код вместо (правилното) това Код
Титла: Re: php login форма Публикувано от: gat3way в Dec 01, 2010, 09:43 Това в mysql.users никога не е било md5. mysql ползва два password hashing алгоритъма, единия до версия 4.1, другия оттам насетне, двата са достъпни чрез OLD_PASSWORD() и PASSWORD().
Първият (PASSWORD_OLD()) е хрумване на хората от mysql и е малоумен, има ред проблеми. Първият е че avalanche ефектът е много слаб и сходни низове дават сходни хешове. Вторият е че не е salt-нат, ако имаше повече интерес, щяха да се направят rainbow таблици, но пък не съм виждал засега. Третият е че алгоритъмът е простичък и не изисква особени изчислителни ресурси. Като резултат, трошенето на такива хешове е възможно най-проста задача, особено върху по-мощнички GPU-та с подходящият софтуер като hashcat примерно. Обикновено скоростта на кракване е поне няколко пъти по-голяма, в сравнение с md5, върху стари nvidia карти спокойно достига 1 милиард кандидата/секунда. Вторият (PASSWORD()) представлява две последователни SHA-1 операции върху паролата, отново няма salt-ване. Avalanche ефектът си е ОК, операцията изисква доста повече изчислително време, но отново е напълно feasible да се пробваш да я bruteforce-неш върху GPU-та, освен което е възможно да се направят rainbow таблици, макар и никой да не му се занимава. Недейте да използвате PASSWORD(), md5(), sha1() или тем подобни прости начини да си hash-вате паролите, защото е безотговорно. Дори и salt-натите варианти. Има доста по-сигурни начини, като PHPASS на Solar Designer (който се изплзва примерно от wordpress или phpbb3). Или пък PBKDF2 с достатъчно голям брой итерации. Има много примери из нета. Титла: Re: php login форма Публикувано от: neter в Dec 02, 2010, 17:24 Понеже не използваш die към mysql_query (може би и в db_init() функцията), е възможно да пропуснеш евентуален проблем с връзката към базата данни или проблем в заявките, заради които проблеми musql_num_rows да връща нула (тъй като няма данни, подадени към него). Провери дали си описал всичко нужно и коректно във функцията db_init(), може да покажеш и какво съдържа, и добави die() с някакъв познавателен текст към заявките, за да видиш коя заявка не минава (ако има проблем със заявките) ;)
|