Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Базы Данных > Загадка


Автор: Feldmarschall 21.12.2007, 12:02
Код

$login=mysql_real_escape_string($_POST['login']);
$pass=mysql_real_escape_string($_POST['password']);
$pass=md5($pass);

$query="select * from users where login='$login' and password='$pass'";


что в этом коде неправильно?  smile 

Автор: SamDark 21.12.2007, 12:40
Feldmarschall, 
Идея.

Автор: SelenIT 21.12.2007, 13:04
Feldmarschall, гы smile 

Хотя, с другой стороны, для большинства разумных паролей (буквы-цифры-подчеркивание...) косяк может никогда и не вылезти... Но все равно, непонимание смысла mysql_real_escape_string налицо smile 

Автор: Feldmarschall 21.12.2007, 13:13
В общем, да, ошибка сильно потенциальная, и задачка именно на понимание смысла mysql_real_escape_string

Автор: bars80080 21.12.2007, 13:27
было бы вообще отлично, если бы просветили презренных,

ибо столько рекламировать эту функцию, а потом обнаружить косяк, показать, но не рассказать об этом

меня вообще интересует md5,
вставка хэша в БД безопасна в любом случае или нет?

Автор: MoLeX 21.12.2007, 13:42
bars80080, смотри допустим ты в качестве пароля указал какунибудь лабуду (sql-инъекцию туже), когда твой пасс пройдет через md5 то там будет тока хеш который хоть куда вставляй, т.к. является набором букв и цифр

Автор: SelenIT 21.12.2007, 13:46
Цитата(bars80080 @  21.12.2007,  13:27 Найти цитируемый пост)
столько рекламировать эту функцию, а потом обнаружить косяк

Косяк не в ф-ции, а в таком применении. Смысл ее - заэкранировать спецсимволы SQL непосредственно при формировании запроса, поэтому очевидно, что она должна быть последней операцией, проводимой со входной строкой. Ну а если мы точно знаем, что наша строка будет содержать только цифры и буквы a-f (притом ровно 32 штуки, независимо от входной строки) - то зачем вообще что бы то ни было экранировать?

Автор: bars80080 21.12.2007, 14:06
стало быть чисто прикол

меня это забеспокоило
Цитата
для большинства разумных паролей (буквы-цифры-подчеркивание...) косяк может никогда и не вылезти


ну, а md5 успокоили

а то кто знает, какая хня может поджидать на повороте...

Автор: MoLeX 21.12.2007, 14:29
Цитата(bars80080 @  21.12.2007,  14:06 Найти цитируемый пост)
а md5 успокоили
 smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)