1. PHP / Говнокод #4512

    +167

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    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: Восстановление пароля <[email protected]>\r\n"; 
    $headers .= "Bcc: [email protected]\r\n"; 
    $send=mail($to, $subject, $message, $headers); 
    if ($send==true) { echo 'Пароль был отправлен на ваш email.';} else { echo 'Попробуйте позже.';}
    }
    else { echo 'Такого пользователя нет в базе.'; }

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

    Запостил: Wivern, 02 Ноября 2010

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

    • Вытягивание всех паролей прошло успешно.
      Ответить
      • Где тут вытягивание всех паролей?
        Ответить
        • благодаря второй строке, это можно проделать.
          Ответить
        • на счет паролей не скажу, но емылы вот через такое
          echo 'Такого пользователя нет в базе.';

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

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

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

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

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

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

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

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

                                                                  Правда, что же это получается?
                                                                  когда пользователей много, я ввожу любой пароль от балды и вхожу под каким-нибудь челом?
                                                                  Ответить
                            • логин admin, пароль подходит любой =)
                              Ответить
                            • Ага, регистрируешься в такой системе, просят: "Введите парольную фразу". Вводишь. Выдается сообщение: "Данная парольная фраза уже занята, используйте другую" :)
                              Ответить
                    • надежность защиты (пароля) дожна быть прямо пропорциональна ценности хранимых данных. То есть, для социалки, где про тебя вся подноготная, нужен надежный пароль, но нафига он, к примеру, на торрент-трекере? ой, мне ратио попортят, какая досада... = ))
                      Ответить
            • > MySQL так не дропнешь
              если ещё с правами намудрено, то для into outfile хватит
              Ответить
              • into outfile вывалится по ошибке синтаксиса единственный вариант если пыха меньше какой то версии то можно #0 в конец $_POST['mail'] влепить и будет все в шоколаде .
                Ответить
                • не надо нулей...
                  ' OR 1 INTO OUTFILE '/path/to/file.txt' -- '
                  Ответить
                  • Если волшебные кавычки включены, путь не экранировать просто так.
                    Ответить
                    • А, ну да...
                      http://art-orenburg.narod.ru/child_with_computer.jpg
                      Ответить
    • Говноскрипт. Все в традициях жанра.
      А ссылку на сайтец не подкинете :)
      Ответить
      • с сылкой ) это уже будет раздачей слона )
        Ответить
      • Легко!
        http://passport.yandex.ru/passport?mode=restore
        Ответить
        • а я думал -- гугл)
          Ответить
        • Ага, восстановление пароля от мыла:
          * Введите Ваш e-mail (от которого Вы забыли пароль)
          > echo 'Пароль был отправлен на ваш email.'
          Ответить
    • wh0cd839931 <a href=http://buyviagraonline2017.com/>Buy Viagra</a>
      Ответить

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