Цитата |
Да ничего страшного не происходит! А вот в вашем случае если юзер введет что-то типа - test \', то при выводе получит test \\\', если конечно вы не будете применять stripslashes(), а если будете, то +несколько килобайт кода вам в минус и скорость работы не в плюс. |
Вы сначала попробуйте, прежде чем так категорично заявлять. test \\\' Вот это Вы получите, если будете эксперементировать примерно так:
PHP |
<? echo mysql_escape_string("\'"); |
что наверняка и делаете. Только этого делать нельзя, так как функция предназначена именно для работы с запросами, а не с выводом. В базу она запишет именно \' и ничего иначе. А вот работать с регулярками по сущностям - это ноу-хау, я Вам скажу...
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Насчёт выхода, это уже моя проблема я никого не просил писать мне скрипт на удаление кук, он у меня уже давно есть. Насчёт взлома: если действительно сайт захотят взломать то они этого сделают, да и насчёт паролей, я пользователям никаких гарантий на то что их информация останется не тронутой не давал, думать уж им регистрироватся или нет, и о том какой пароль использовать думать тоже им.
_____________
FC Barcelona - она всегда будет в моем сердце!
PHP |
echo mysql_escape_string("\'"); |
- Но а насчёт этого вы twin в принципе правы
_____________
FC Barcelona - она всегда будет в моем сердце!
Цитата |
Насчёт взлома: если действительно сайт захотят взломать то они этого сделают, да и насчёт паролей, я пользователям никаких гарантий на то что их информация останется не тронутой не давал, думать уж им регистрироватся или нет, и о том какой пароль использовать думать тоже им. |
Конечно сломают, если Вы так и дальше будете рассуждать. И слава Богу, что этот Ваш сайт так, детская забава. Потому что к серьёзному ресурсу так не относятся. Пользователя надо уважать, любить и беречь. Вы очень наплевательски о них рассуждаете. Вот посмотрите, и они ответят Вам тем же, потому что мало кто захочет регистрироваться на сайте, сделанном по дилетантски и с таким к ним изначальным отношением.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Извените, но мой сайт - это не детская забава как вы говорите, и к пользователям я не "наплевательски" отношусь, я действую в пределах возможного, но поверьте, какая бы защита не была у сайта, её всё равно взломают если захотят, А сайт они смогут взломать не потому что Я так рассуждаю.
_____________
FC Barcelona - она всегда будет в моем сердце!
Цитата |
я действую в пределах возможного, |
Вы действуете по пути наименьшего сопротивления, как легче. Но пароль вытаскивать в кукис - это намеренная подстава. Ведь сопрут куки, наделают беды, а Вы скажите - сам виноват. Вот это и есть наплевательское отношение. Взломают не взломают, но самому то зачем юзера подставлять?
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
А на чём предлагаете кукисы построить? Логин и ID?
_____________
FC Barcelona - она всегда будет в моем сердце!
Вижу по той ссылке которую вы дали (К стати спасибо за неё много чего полезного) там к ID как я понял случайное значение присоеденяется?
_____________
FC Barcelona - она всегда будет в моем сердце!
Ну да, там всё расписано. Главное принципы построения усвоить, тогда легко и надежно можно делать авторизацию. И спать спокойно.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Рассматрю этот вариант, спасибо за помощь
_____________
FC Barcelona - она
всегда будет в моем сердце!
twin, кстати, md5 невозможно взять брутом (тем более с солью). Можно создать строку с такой же контрольной суммой, но никак не раскрыть оригинал. Иначе ДВД фильмы можно было бы посылать СМСкой =)
Но соглашусь, ваш вариант будет по-безопаснее, да и интереснее
Спасибо!
md5 легко колется брутом, если длина пароля меньше 5 смволов. Больше уже трудно, а еще больше просто экономически не выгодно. По этому можно с солью не заморачиваться, а просто ограничить минимальное к-во символов в пароле.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
Цитата (twin @ 28.01.2009 - 14:34) |
По этому можно с солью не заморачиваться, а просто ограничить минимальное к-во символов в пароле. |
Вот это очень парит, когда есть пароль 5-ти символьный для всяких "левых" ресурсов, а тебе выдают ошибку о том, что пароль должен быть на 2 симовла больше. Приходится придумывать что-то.
Есть такой момент. Тут разные подходы и разные точки зрения. Я почему и говорю - защита вещь индивидуальная. Вот когда принцип поймешь и правила хорошего тона усвоишь, тогда и защита получается корректная и надежная.
_____________
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.Настаивал, настаиваю и буду настаивать на своем. На кедровых орешках.
amberlx
31.01.2009 - 01:30
На счет записи в базу, прочитал ман (http://php.ru/manual/function.mysql-real-escape-string.html) и пользуюсь этой функцией:
Код |
<?php function quote_smart($value) { if (get_magic_quotes_gpc()) { $value = stripslashes($value); } if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } return $value; }
$query = sprintf ("SELECT * FROM users WHERE user=%s AND password=%s", quote_smart($_POST['username']), quote_smart($_POST['password']));
mysql_query($query); ?> |
Запрос, составленный таким образом, будет выполнен без ошибок, и взлом с помощью SQL Injection окажется невозможен.
Работает 100% без всяких глюков.
Быстрый ответ:
Powered by dgreen
Здесь расположена полная версия этой страницы.