"PHP" / Говнокод #4512 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
if (!empty($_POST['mail'])) {
$res=mysql_query("SELECT * FROM `users` WHERE email='".$_POST['mail']."' LIMIT 1");
if (mysql_num_rows($res) > 0) {
$row=mysql_fetch_array($res);

$to  = $_POST['mail'] ; 
$subject = "Восстановление пароля";
$message = '<html><head><title>Восстановление пароля</title></head><body>
<p>Процедура восстановления пароля прошла успешно</ p>
<p>Ваш пароль: <b style="color:#006633"> '.$row['pass'].'</b></p></body></html> '; 

$headers  = "Content-type: text/html; charset=utf8 \r\n"; 
$headers .= "From: Восстановление пароля <mail@domen.com>\r\n"; 
$headers .= "Bcc: mail@domen.com\r\n"; 
$send=mail($to, $subject, $message, $headers); 
if ($send==true) { echo 'Пароль был отправлен на ваш email.';} else { echo 'Попробуйте позже.';}
}
else { echo 'Такого пользователя нет в базе.'; }

Мегасекьюрное восстановление пароля!

Запостил: Wivern Wivern, (Updated )

Комментарии (72) RSS

      • на счет паролей не скажу, но емылы вот через такое
        echo 'Такого пользователя нет в базе.';

        спамеры перебором вычисляют.

        правильные системы ставят лимит на количество запросов с одного IP в минуту/час/етц. что бы переборы пресекать.

        ЗЫ ну и более крутые хакеры, если уже известен емыл, хакают ДНС, ставят вражеские MX записи, просят выслать емыл с паролем который зарутеный через вражеские MXы попадает во вражеские руки. почему собственно все сейчас миграцией на DNSSEC и заняты.
        Ответить
        • Зачем такие сложности, когда 2-я строчка дает неограниченные возможности для SQL-инъекции?!
          Ответить
      • имеется ввиду sql injection через $_POST['mail']. причем тут достаточно широкое поле действий - можно вытянуть как один пароль, так и все скопом, а заодно и дропнуть всю базу.

        плюсовать не стал, посколько это типичный скрипт 90х годов, когда не у каждого была привычка ставить в поле с юзернеймом кавычку.
        Ответить
        • MySQL так не дропнешь, через mysql_query() пролазит только один запрос за раз.
          Ответить
          • Зато чудес натворить можно. Да, сильно.
            А ещё очень полезно хранить плейн-текстовые пароли в базе. Восстанавливать удобно. Небезопасно слегка, но, зато, сколько удобств сразу.
            Ответить
            • С паролями вообще печальная ситуация в массе своей. Берём любую базу пользователей, даём запрос на извлечение "горячей десятки" паролей (или несолёных хэшей паролей - одно и то же по сути) и убеждаемся, что несколько процентов аккаунтов на сайте можно взломать, просто перебрав все акки с одним и тем же паролем.
              Ответить
                • По моим наблюдениям, лидер списка - 111111 (число единиц варьируется и равно минимально допустимой длине пароля).
                  Ответить
              • Проводил анализ безопасности на одном форуме с несколькими тысячами пользователей. На любой выборке около 70% имели в качестве пароля словарное слово. К сожалению, не помню точный процент неудачников с паролями типа 111111, 123456, 147258369 или шести(восьми)значными вида 12081989. Тем не менее, наблюдались в обилии.
                А ещё, как показывает практика, этот же пароль у многих на почте, ICQ, кумтакте и прочая, прочая.
                Ответить
                • а еще я все чаще вижу проекты, где пароли хранятся плейн текстом.
                  еще 10 лет назад было очевидно, что их так нельзя хранить.
                  но теперь вышла новая поросль, очевидно
                  Ответить
                • >процент неудачников
                  хорошее отношение к пользователям собственного форума 🙂
                  а вы не задумывались, что нет смысла делать опупенные пароли для разномастных говносайтов? Если мне нужно зарегаться только ради одной ссылки (которая скрыта для гостей), то я сперва проверяю bypass.org.ru, а в случае неудачи завожу свой "дежурный" профиль с паролем из шести одинаковых цифр и не вижу в этом ничего предосудительного. Так что задумайтесь, а стОит ли ваш сайт того, чтобы на нём обосноваться надолго и основательно, и придумать для этого хороший пароль.
                  Ответить
                  • "Один" != "мой". 🙂

                    Одно дело, когда действительно заводится для одноразового посещения. Другое дело - когда плотно сидят там же.
                    Причина проста. Людей (простых людей, а не всяких параноидальных гиков) безопасность волнует только в последний момент. Они не размышляют о будущем, ленивы, и не разбираются в интернетах. Со времён червя Морриса (оный, по слухам, пытался подобрать пароли) отношение людей к паролям не изменилось. Только если раньше это, в основном, были непредусмотрительные (да кто мог о таком подумать?) научные работники с одним аккаунтом и одним паролем, сейчас логины и пароли окружают нас повсюду.
                    Вот и получается, что пароль один. И хорошо, если он - не дата рождения.

                    У хороших уникальных паролей есть свои проблемы. Например, я уже не вспомню пароли на сайты, на которые не ходил с 2006-го. За всё приходится платить.
                    Ответить
                    • вопросик:
                      Допустим есть два пароля,
                      "зимой и летом - одним цветом"
                      "wJKd3nNa"
                      Какова их сложность и сколько времени (при одинаковых условиях) нужно взломщику чтобы подобрать их?
                      --
                      Это я к тому, что первый пароль не намного менее сложный чем второй, но легче запоминается...
                      Ответить
                      • первое - пассфраза, она банально не влезет в поле и на этом секурность закончится
                        Ответить
                      • Вполне допустимо использовать фразы и производные от фраз, например, первую и последнюю букву слова. У них есть свои очевидные плюсы, и, вероятно, какие-то минусы, которых я уже не помню.
                        Ответить
                        • да, если
                          1. длина пассфразы достаточна - например, 14
                          2. если комбинировать с другими рекомендациями по паролям
                          КажжОхохоЖелЗнаГидежеСидиФаз

                          я вот не знаю, а хорошая ли это идея, писать фразу, прерывая ее цифрами и спецсимволами? ну, что-то вроде яМака93каКо^^деР
                          Ответить
                        • В случае достаточной сложности, возможно ли вообще отказаться от логина, оставив для идентификации, лишь "пароль-пассфразу"?
                          Ответить
                            • Немножко другое имею ввиду. Что-то вроде "два в одном"
                              Ответить
                                • Здесь получается строка. Для пользователя это выглядит как слово, фраза или то что сам придумает.
                                  Вобщем, по сути, достаточно было бы ввести только закрытый ключ при аутентификации.
                                  Ответить
                                  • так и представляю:
                                    $регистрация: введите ваше имя и пассфразу
                                    >Вася, 01234567890
                                    $ простите, эта фраза уже кем-то занята

                                    $введите пассфразу для аутентификации
                                    >01234567890
                                    $добро пожаловать, Вова!
                                    Ответить
                                    • Конечно, подобное сразу приходит на ум 🙂
                                      Но именно в этом не вижу большой сложности. На мой взгляд, сложность в привязке (и определении), скажем так, определённого пользователя, определённой группе, на основании введённого ключа.
                                      Ну и естественно, сложность в шифровании и передаче данных.
                                      Ответить
                                      • все же идея логина и пароля именно в их разделении. их несвязанность дает бОльшую энтропию информации. То есть, логин должен быть уникальным, пассворд - не обязательно. Сообщение о неверном логине или пароле даст меньше информации, чем о паре логин-пароль.
                                        Только если по вводимым данным пользователя генерировать длинный ключ
                                        Ответить
                                        • > Сообщение о неверном логине или пароле ...
                                          Немного видоизменю: "Сообщение о неверной части составной пассфразы даст тоже меньше информации, чем о фразе целиком".
                                          Говорю, вижу сложность не в этом.
                                          А именно:
                                          1. Использование необратимого шифрования (к.о. необратимо, к сожалению, в случае если фразу ещё и посолить)
                                          2. Обратимое шифрование - даёт больше шансов некоторым товарищам.
                                          3. Передача "соли" (а затем и посолённой фразы) при известном алгоритме шифровки-дешифровки - тоже даёт пищу для размышлений.
                                          Ответить
                                            • Так это практически то же самое что имеем на сегодня (логин:пароль, https и тп).
                                              Думаю, должно таки существовать достаточно грамотное и, главное, простое решение. 🙂
                                              --
                                              если бы ещё пришли к общему мнению, в вопросах постоянного хранения данных на клиенте (по типу local storage во flash)...
                                              Ответить
                                                • Куки передаются от клиента к серверу и наоборот при каждом запросе.
                                                  Имею ввиду что-то вроде объекта storage в firefox, userData в ie, database storage в safari... в opere, пока отсутствует. Тут с каждым браузером по своему приходится извращаться...
                                                  Ответить
                                                    • Если уж совсем глубже - необходимо желание что-то изменить... 🙂
                                                      Ответить
                                                      • и таким образом, концепция принципиально новой AAA умерла в зародыше
                                                        Ответить
                                                        • Никто, пока что, не умер...
                                                          Но как обычно к этому относятся:
                                                          - О, я придумал новую фичу!
                                                          - А это у кого-нибудь используется?
                                                          - Нет ещё.
                                                          - Ну значит и не надо.
                                                          Ответить
                                                        • ...а туда планируется сохранять нечто вроде клиентского сертификата?
                                                          Ответить
                                                          • Я ничего туда не планирую класть.
                                                            Это просто я ответил на сообщение Istem'а, что ,мол, в Опере нет такого хранилища данных, как в IE userData, как storage в FF, как db storage в Safari. Есть оно.
                                                            Ответить
                                                            • я тоже не знаю, что он собирался вот-вот изобрести 🙂
                                                              Ответить
                                                              • да хотел он, чтоб сложные пароли у каждого были, и один такой пароль заменяет пару логин-пароль (типа пароли должны быть обязательно уникальны).

                                                                Правда, что же это получается?
                                                                когда пользователей много, я ввожу любой пароль от балды и вхожу под каким-нибудь челом?
                                                                Ответить
                          • Ага, регистрируешься в такой системе, просят: "Введите парольную фразу". Вводишь. Выдается сообщение: "Данная парольная фраза уже занята, используйте другую" 🙂
                            Ответить
                  • надежность защиты (пароля) дожна быть прямо пропорциональна ценности хранимых данных. То есть, для социалки, где про тебя вся подноготная, нужен надежный пароль, но нафига он, к примеру, на торрент-трекере? ой, мне ратио попортят, какая досада... = ))
                    Ответить
          • > MySQL так не дропнешь
            если ещё с правами намудрено, то для into outfile хватит
            Ответить
  • Говноскрипт. Все в традициях жанра.
    А ссылку на сайтец не подкинете 🙂
    Ответить

Добавить комментарий

Переведи на "PHP", guest!

    А не использовать ли нам bbcode?


    8