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

0

  1. 1
setcookie('password', $passHash , time() + $this::TIME_COOKIE * 1000 +  $remember ? $this::TIME_COOKIE_REMEMBER : 0  * 1000 );

И я то думал, почему кука не появляется...

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

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

  • Из-за приоритета тернарника забаговало? Нефиг скобки экономить 😉
    Ответить
    • именно так) Вот щас сижу лопачу код остальной в поисках похожей баги, уже пару мест выискал (
      Ответить
    • говно, это когда в куках логин и пароль в открытом виде от доменной учетки хранится, и при каждом клике передается по http... и это не фантазия 🙁
      Ответить
      • Это тоже говно. Крадется база - и хеши даже расшифровывать не надо. Подарок прям.
        Ответить
        • Как будто это так легко взять и украсть БД. Если доступ только с локального компа. Надо еще кодярник загрузить и его исполнить. А если смог загрузить кодярник то нах тогда база? И так делай что хочешь.
          Ответить
          • Не-не-не Девид Блейн...

            Если у тебя упёрли базу с чистыми или плохо просоленными паролями - ты подложил жирную свинью своим юзерам 😉 Ведь большинство из них юзало эти пароли на других сайтах.

            Ну и насчет загрузить кодярник. А что, если хакер нашел только sql иньекцию, которая позволяет надергать записей о юзерах из таблички с оными, а полного доступа не получил?
            Ответить
            • Тут главное условие если уперли БД.
              Кстати о просолки паролей у нас пароли юзеров солятся разными солями. если id пользователя кратен 5 то одна соль если 2 то другая. Если не 1 и не 2 то 3. По мне это параноя но как есть.
              Ответить
              • > у нас пароли юзеров солятся разными солями. если id пользователя кратен 5 то одна соль если 2 то другая. Если не 1 и не 2 то 3
                Вот поставят у вас юзер с айдишкой 10 и юзер с айдишкой 15 одинаковый пароль, и будет у них одинаковый хеш 😉 Толку от такого алгоритма - ноль без палочки. Соль должна быть случайная и разная (ну по возможности, из-за конечной длины соли она может изредка совпадать) во всех учетках, ну на крайний случай - базироваться на логине/айдишке. Так что это не паранойя, а затыкание пробоины пальцем 😉

                > Тут главное условие если уперли БД.
                Тут главное условие - получили доступ к табличке с аккаунтами. Всю бд для этого переть излишне.
                Ответить
                • + сейчас перебиралки паролей уже не такие медленные, как раньше. А паролю у юзеров по-прежнему тупые и короткие. Поэтому даже двойное хеширование и годная соль тут не помогут ;(

                  google PBKDF2, bcrypt, scrypt
                  Ответить
                  • перебералки могут быть сколько угодно быстрыми. пока функции генерации хеша будут притормаживать полный перебор просто пустая трата времени. Можно конечно по словарю.
                    Ответить
                    • Да никому не нужны пароли конкретных юзеров ;)))

                      Разломали по словарю тысчонку другую паролей из ста тысяч - это уже профит 😉

                      Тремя разными солями ты увеличил им время работы в 3 раза (по сравнению с несолёными). Круто, чо.

                      P.S. Хеш надеюсь не md5?
                      Ответить
                        • С солями в БД им надо подбирать каждый пароль по-отдельности (т.к. соли разные). С непосоленными паролями - подбираем все спертые пароли за один проход. С твоей солью - за три.
                          Ответить
                          • В моём случае не известна 1 соль 2. количество солей 3. правила соления. в твоём есть

                            1. хеш 2. соль. надо только вычислить способ соления (т.е. куда соль прикладывается к паролю спереди сзади в середину или еще как).
                            Ответить
                            • > в твоём есть
                              И поэтому этот алгоритм, внезапно, легче исследовать и доказывать его надежность.

                              > надо только вычислить способ соления
                              Упрут из кода. Не забывай, что злодеем может оказаться психанувший бывший сотрудник твоей же конторы.
                              Ответить
                              • дык он за 2 недели доработки может бакдорчик за пилить.
                                Я тут вот что подумал что надо конечно в БД хранить соли к паролям юзера + солить еще солью с кода. тогда все станет еще сложней. Ну и обязательно формы авторизации через https
                                Ответить
                                • > Ну и обязательно формы авторизации через https
                                  Самый лол в том, что одноглазники до сих пор до этого не додумались 🙂 Пароли летают прямо открытым текстом.
                                  Ответить
                              • > Упрут из кода.
                                Поскольку 99% разработчиков небогаты фантазией, то, если известен хотя бы один пароль на ресурсе, соль можно и набрутить. Или даже алгоритм соления.
                                Как я написал ниже, у меня была база хэшей и солей, но неясно, каких. Ну, фигле, зарегал нового пользователя, поставил пароль 123456, посмотрел хэш, соль, засунул в генератор и нашёл, что алгоритм примитивный.

                                Явсегдабудучитатьвесьтредпереддобавление мкомментария.
                                Но вектор атаки вполне очевидный.
                                Ответить
                            • да пойми ты, дело не в том, насколько хорошо, и с каким количеством солей ты их солишь, а в том, что хранишь хеш пароля в куках, которые не HttpOnly.
                              bool setcookie ( string $name [, string $value [, int $expire = 0 [, string $path [, string $domain [, bool $secure = false [, bool $httponly = false ]]]]]] )

                              >Тут главное условие если уперли БД.
                              с таким подходом из даже из базы воровать не надо, достаточно XSS

                              пароль должен 1 раз передаваться на сервер, чтобы там сравнить хеш, и все, дальше идентификатор сессии.
                              Ответить
                              • > пароль должен 1 раз передаваться на сервер
                                В идеале он вообще не должен никуда передаваться 😉
                                Ответить
                                • то есть ты предлагаешь его на клиенте солить и кешировать? 🙂
                                  Ответить
                                    • уверен, что день, когда все браузеры начнут поддерживать SRP совпадет с днем, когда Путин перестанет быть президентом РФ.
                                      а так, да, помечтать можно
                                      Ответить
                                      • Ну так то можно запилить srp на жс. Это конечно не идеал (т.к. сервер все еще может подсунуть другой жс и упереть пароль) но уже лучше...

                                        Ну если не srp -так любой challenge-response на жс наваять можно.
                                        Ответить
                                          • > но вообще, это на уровне браузера должно работать
                                            Само собой. Причем в идеале это должно быть какое-то особое окошко, которое никак нельзя изобразить с помощью хтмл и жс.
                                            Ответить
                                            • ну, все же shadow DOM нужен хотя бы 🙁 а то весь дизайн портить будет
                                              Ответить
                                              • > ну, все же shadow DOM нужен хотя бы 🙁 а то весь дизайн портить будет
                                                Не-не-не. Я себе это так представляю. В самом хтмл будет только кнопка "войти" (без ограничений по дизайну, просто кнопка). И дальше браузер будет показывать свое всплывающее окно, которое юзер всегда сможет отличить от любой верстки. Можно воспользоваться затенением всего браузера, как в UAC семерочки, а может быть как в фаерфоксе сейчас выпадает окошко запомнить пароль...

                                                Ну и юзер должен привыкнуть, что пароль он вводит только в это окошко, и никуда больше.

                                                Иначе толку от всего этого SRP в браузере - ноль.
                                                Ответить
                                        • >(т.к. сервер все еще может подсунуть другой жс и упереть пароль)
                                          Это совсем не то, т.к. от митма оно не защищает вообще никак.
                                          Ответить
                                      • Лол, а почему так? Бля, самый лучший протокол для парольной аутентификации почему-то никому не нужен. Кроме blizzard, которая пару раз успела стать на грабли.

                                        И причем тут браузеры? TLS-SRP это стандарт, часть TLS. Ну согласен, должны. Но у меня оно вообще нигде еще не работало. Есть желающие попробовать, кстати?
                                        Ответить
                                        • > Бля, самый лучший протокол для парольной аутентификации почему-то никому не нужен.
                                          Потому что если окошко для ввода пароля можно сэмулировать на хтмл/жс - то страничка может получить и отправить этот пароль безо всяких SRP куда надо. Сделают тот же самый MITM с подменой формы/скриптов, что и с жсной реализацией, да и всё.

                                          Короче без отдельного окошка браузерное SRP будет ничуть не безопасней, чем если его запилить на жс.

                                          Иллюзия безопасности хуже ее отсутствия 😉
                                          Ответить
                                        • > Бля, самый лучший протокол для парольной аутентификации почему-то никому не нужен.
                                          Кстати, есть еще одна тонкая проблема: SRP никак не защищает от хуёвых паролей. А из-за того, что пароль никогда не будет доступен серверу - он не сможет проверить, удовлетворяет ли этот пароль требованиям безопасности...

                                          Т.е. придется еще и политику паролей форсить на уровне браузера ;( Я это вижу так - при регистрации сайт указывает минимальные требования к паролю, а браузер проверяет их.
                                          Ответить
                              • я согласен с вами. Мы дискутировали по поводу как солить.
                                Ответить
                      • > Разломали по словарю тысчонку другую паролей из ста тысяч
                        Оптимист. Рейт обычно держится около 60%.
                        Я как-то случайно выкачал базу одного, гм, говнопортала. Там отдельная кулстори.
                        Если вкратце - разработчики упоролись и выводили в коде страницы (!) хэши (!!) паролей пользователей, мыла (!!!) и всякую подобную инфу. Страница весила мегабайт двадцать.
                        Скрипт, который выгребал хэши, словарь на шесть гигов, вот и эти самые 60-70% винрейта.
                        Ответить
                          • Солёное, md5 (это видно сразу), форму соли подобрал, навскидку не скажу. Но в пассвордспро и хэшкате было.
                            Ответить
                            • Медленные хеши поподбирай и расскажешь. У меня WPA давал 25 /сек
                              Ответить
                                  • Хорошая попытка. Но я полагаю, что:
                                    а) почти безразлично, насколько хорош собой алгоритм, если словарём можно вскрыть 60..90% паролей;
                                    б) будущее за аппаратными средствами, в хранении паролей в базе не будет необходимости. Уязвимости могут существовать, например, всё ещё можно украсть пароль из браузера или памяти сервера, но сливать базу на сотни тысяч паролей будет невозможно.
                                    Ответить
                                    • >будущее за аппаратными средствами, в хранении паролей в базе не будет необходимости.
                                      И это после разоблачений Сноудена?
                                      Ответить
                                      • Стараюсь-с не читать советских газет, знаешь.
                                        Ответить
                                        • Это про Сноудена читать не хочешь? Профессиональное самоубийство задумал?
                                          Ответить
                                          • Какой-то цирк с понями же. Я читал единственный тред, до того, как он обитал в аэропорту.
                                            К нему на блатхату пришли журнализды, он собрал мобилки, выключил и спрятал в холодильник.
                                            Это говорит либо о том, что он упорот, либо любит хорошие мистификации, либо статью писал норкоман.
                                            Ответить
                                            • Не знаю. Про сноудена впечатление - зафорсенный мудак, который рассказал быдлу то о чём все и так знали.

                                              Столлман об этом десятилетиями говорит.
                                              Ответить
                                              • Это штульман - зафорсенный мудак. Который рассказывает людям про то как опасен жаваскрипт. И что он предлагает? Отключить его нафиг, т.е. лечить насморк отрубанием головы. Чтобы такое предложить, много ума не надо. Неудивительно, что на него забило хуй даже большинство прыщеблядков.
                                                Ответить
                  • >+ сейчас перебиралки паролей уже не такие медленные, как раньше.
                    Мож ПРОЦЫ не такие медленные как раньше?
                    Ответить
                • Соли хранятся в коде а не в БД. И пусть будут одинаковые кеши. Как определить что является правильным паролем? К тому же мало вероятно описанное совпадение.
                  Ответить
                  • В криптографии код всегда считается открытым и доступным противнику. Тащемта почти всегда так оно и есть 🙂
                    Ответить
                  • злоумышленник может стырить базу и попытаться восстановить свой пароль, получив эту самую секретную соль
                    А если ты добавил соль в начало, то это не усложнит злоумышленнику жизнь
                    Ответить
                    • > попытаться восстановить свой пароль
                      Так во всем виноват разраб, забывший добавить кнопочку "забыли пароль"? 🙂

                      P.S. А, понял, тут атакующий подбирает соль зная хеш и пароль. Да, вполне логичная атака.
                      Ответить
                  • > Кошерно SRP, остальное - кал.
                    Ну вот научатся браузеры в SRP - будет кошерно. Сам жду этого дня ;(
                    Ответить
                    • Ну с OAUTH все не так плохо, теперь защищать нужно один единственный сервер аутентификации, на котором ничего лишнего нет.
                      Ответить
              • >Кстати о просолки паролей у нас пароли юзеров солятся разными солями. если id пользователя кратен 5 то одна соль если 2 то другая. Если не 1 и не 2 то 3. По мне это параноя но как есть.
                Соль можно хранить в базе, она не секретна и нужна для того, чтобы порадовать злоумышленника и не дать ему подобрать пароли по радужным таблицам
                Ответить
                • радужные таблицы это для md5. Есть более стойкие алгоритмы.
                  Ответить
                  • Радужные таблицы - это, блядь, для любого несоленого хеша.
                    Ответить
                    • Нахуй иди. Тебе по какому сказать, что хеш соленый. Соль хранится не в БД а коде. И её три.
                      Ответить
                      • Блядь, дело не в алгоритме, а в наличии соли. И прочти про принцип Керкхоффса, потом пизди здесь.
                        Ответить
                          • Ну так по этому принципу не имеет значения где хранится соль - в базе или в сырцах.
                            Ответить
          • Кодярник вычистят раскатыванием бекапа, украденные пароли обратно не вернешь.
            Ответить

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

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

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


    8