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

    +156

    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
    19. 19
    20. 20
    21. 21
    22. 22
    23. 23
    class core {
    public static function txt($var){
    $var = trim($var);
    $var = stripslashes($var);
    $var = str_replace("\00", '', $var);
    $var = htmlspecialchars($var, ENT_QUOTES, 'UTF-8');
    $var = str_replace("%", "\%", $var);
    $var = str_replace("_", "\_", $var);
    $var = iconv('utf-8', 'windows-1251', $var);
    $var = iconv('windows-1251', 'utf-8', $var);
    return $var;
    }
    public static function nik($id){
    global $dbs;
    $nick = $dbs->query("SELECT * FROM `users` WHERE `id` = '$id'")->fetch_assoc();
    if(empty($nick)){
    $us = '[Удален]';
    }else{
    $us = ($nick['onl']<time()-600?'<font color="red">[off]</font>':'<font color="green">[on]</font>').' <a href="/'.$nick['login'].'" style="color:black;"><b>'.$nick['login'].'</b></a>';
    }
    return $us;
    }
    /*.....и еще куча срани*/

    Вот он ООП, ну и оптимизция))

    Запостил: Ruslyakan, 31 Декабря 2013

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

    • вот еще
      # Кодируем пароль
      public static function shif($var){
      return md5($var);
      }
      Ответить
      • Ну а что такого? Инкапсуляция же ;) Всегда можно переделать на что-то чуть более адекватное.

        P.S. Имена функций должны быть краткими, резкими и острыми как лезвие бритвы! shif()! nik()! txt()!
        Ответить
        • Mate() Feed() Kill() Repeat()
          Ответить
        • и не применено, методы с такими резкими названиями должны выдавать верстку с тегами font ,blink.
          Ответить
    • Мне одному кажется. что три str_replace это слишком?
      Ответить
      • Почему - слишком? Столько, сколько нужо. Если же ты намекаешь на использование регулярки - тут да, что правда, то правда (
        Ответить
        • может потому что строка 3 раза проходится? в пхп нет метода, который вычеркивает множество знаков?
          Ответить
          • Есть, и называется он str_replace :)

            str_replace(array("a", "b"), array("aa", "bb"), $haystack);
            Ответить
            • array() - это обьявление анонимного массива? В пхп нет простого (а1,а2)?
              Ответить
              • Гжегош PHPиздовский.
                Ответить
              • В последних можно писать ["a", "b"], но истинные пыхеры не признают этот способ, т.к. он некрасив и неудобен по сравнению с array(), да еще и не поддерживается на их любимых быдлохостингах с PHP 4.
                Ответить
                • Копрафилы негодуэ
                  Ответить
                • array() будет работать 100% а [] могут в следующей версии отменить.
                  Ответить
                  • Василий, будь человеком - убери проверку IP на спамность. К тому же, раз у я у вас зарегался (у вас появился участник с моим ником), не могу ли я узнать пароль от моей учетки?
                    Ответить
                    • Пароль узнать не можешь там же пароль не в открытом виде да и не правильно чужой акк передавать другому челу.

                      >убери проверку IP на спамность.
                      Это можно а ты под каким ником зареган там ?
                      Ответить
                      • Мы видно, не понимаем друг друга. Я не регистрировался, учетку "Стертор" зарегал какой-то шутник, чтобы вызвать у меня батхерт. По-моему, будет правильнее, если пароль от нее отдадут мне, не считаешь так?

                        Один момент: т.е. ты хочешь сказать, что даже админ не видит паролей юзеров в открытом виде?
                        Ответить
                        • > даже админ не видит паролей юзеров в открытом виде?
                          Если пароли хранятся в открытом виде - значит сайт написан долбоёбом. Обычно так не делают. И все что может сделать админ - сменить пароль на другой.

                          P.S. В идеале пароль не должен передаваться дальше клиентской машины. Но с этим обычно не заморачиваются.
                          Ответить
                          • Спс, кэп. Но что же тогда нам делать, под моим ником сидит другой человек. Это нормально? Надпись-девиз сайта "упоротым нет входа" обретает иронический оттенок.

                            >>Если пароли хранятся в открытом виде - значит сайт написан долбоёбом
                            Возможно ли получить доступ к базе данных извне?
                            Ответить
                            • Попроси выпилить ту учетку. От нее вроде бы ни одного поста не было еще.
                              Ответить
                              • Пусть пока снимут режим проверки на спамность: сейчас мне вообще нет ходу на их сайт. Допустим, удалили эту учетку - какие гарантии, что кто-то опять не зарегает такую же? Лучше подождать.
                                Ответить
                                • >Пусть пока снимут режим проверки на спамность: сейчас мне вообще нет ходу на их сайт
                                  ip менять не судьба?
                                  Ответить
                                  • Нужно быть полным бараном, чтобы поставить + за этот пост,кем бы ни был этот человек.

                                    ps/s я перепробовал 4 000 ip - все забанены.
                                    Ответить
                                    • Плюсанул его я. Ты поди через прокси или тор туда лезешь? Тогда бан вполне заслужен. Если же с нормального ип - проси василия снять блок.
                                      Ответить
                                      • >>Плюсанул его я.
                                        -1000

                                        >>Ты поди через прокси или тор туда лезешь? Тогда бан вполне заслужен
                                        Нет, я очищаю кэш в браузере, переодеваюсь в женское белеь и надушившись и подкрасив половые губы захожу на сайты со своего ip.
                                        Учитывая мое темное прошлое было бы по меньшей мере неразумно светить свой ip.
                                        Ответить
                                        • > Учитывая мое темное прошлое было бы по меньшей мере неразумно светить свой ip.
                                          Ну собственно ССЗБ. Респект фильтру, почти все прокси режет ;)
                                          Ответить
                                        • > неразумно
                                          а че ссать то
                                          49.49.212.131
                                          Ответить
                                • Когда заходишь что пшут ?? Учетку Stertor а я выпилю.
                                  Ответить
                                  • Нет, пока не выпиливайте, до тех пор, пока не будет снят режим блокировки ip.

                                    Меня переадресовывает на страницу с сылкой на сайт stopspam, якобы мой ip там в черных списках.
                                    Ответить
                                    • пробуй щас
                                      Ответить
                                      • No way, my dear friend. see yourself:
                                        http://www.main-hosting.com/resources/?ip=95.211.226.36
                                        Ответить
                                        • каким прокси заходишь ? я через него попробую завтра.
                                          Седня уже пьян.
                                          Ответить
                                          • Не забивай голову. С праздником, дорогой Василий, с Новым Годом!
                                            Ответить
                                        • Your computer IP address 95.211.226.36 is listed at StopForumSpam database so your visit is blocked. You can unblock yourself by entering the following code:
                                          Your IP 95.211.226.36 has been unblocked. Please try visiting website again in 1 minute.

                                          ЧЯДНТ?
                                          Ответить
                                          • Опять пришел хуйню постить? Из-за твоего глупого постя я обидел хорошего человека.
                                            Фактически это тебе: -1000 С Новым Годом, блин.
                                            Ответить
                                            • Это ты хуйню несешь же.
                                              Ответить
                                              • Даже разговаривать с тобой не хочу.
                                                Ответить
                                                • Хочешь подарок на новый год?
                                                  Ответить
                                                  • Да, но людей ведь не дарят. Может, я его получу в следующем году?
                                                    Ответить
                                                    • Пароль sosiska
                                                      )
                                                      Ответить
                                                      • Спасибо, мой юный, бескорыстный друг, но боюсь, я не смогу воспользоваться твоим подарком.
                                                        Ответить
                                            • Что не так?
                                              Ответить
                                              • Нет неспамных айпей.
                                                Этот урод зарегал такую учетку специально, чтобы подразнить меня ;) Но я благодарен ему, т.к. если я не нарушу своих слов - я не регистрировался, мне дали готовую учетку.
                                                Ответить
                                            • Я тебе рабочий способ запостил, что тебя не устраивает?
                                              Ответить
                            • > Возможно ли получить доступ к базе данных извне?
                              Если админ не долбоеб, и не выставил порты наружу - нет. Но еще же есть шанс подобраться к ней изнутри, через уязвимости в коде сайта. Ну и человеческий фактор никто не отменял.

                              Вспомни, часто же в новостях пишут, что с какого то сайта сперли базу логинов и паролей...
                              Ответить
                          • >Если пароли хранятся в открытом виде - значит сайт написан долбоёбом.
                            Вконтакте года до 2009-2010 позволял получить пароль на мыло. Не сбросить, а получить.
                            Ответить
                            • Вконтакте написан долбоёбом.
                              Ответить
                              • Спасибо за плюс. Отрадно, что есть хоть 1 не законтаченный человек.
                                Ответить
                            • Про СОРМ-3 слышали? Так там на полном серьёзе необходимым условием является выдача паролей от соцсетей и е-мейлов по первому требованию Кровавой Гэбни.

                              Выходит, что Дуров облегчил работу спецслужбам на случай, если у интернет-провайдера СОРМ-3 не установлен.
                              Ответить
                              • >>облегчил работу спецслужбам
                                А не по их ли заказу он создал вк? Когда стадо в куче, за ним легче наблюдать. Можно контролировать каждый свой шаг в соцсетях, не писать лишнего, не публиковать личных данных - но это превращается в пытку уже через пару часов. Можно писать что угодно, публиковать что угодно, не опасаясь санкций со стороны администрации - но может настать тот роковой день, когда твоя анкета будет вскрыта по требованию спецслужб - тогда тебе не поздоровится.
                                Ответить
                                • >А не по их ли заказу он создал вк?
                                  Я думаю, ты преувеличиваешь финансовые возможности рашкинских аналогов АНБ. Имхо их бюджет по сравнению с доходом дурова смешен.
                                  Ответить
                  • В пхп хоть раз что-то отменили? ;)
                    Ответить
                    • немспейсы если мне память не изменяет добавили и отменили потом допилили вернули.
                      Ответить
                    • В 5.3 отменили указание способа передачи данных при вызове (теперь его можно указывать только при описании), в 5.4 вообще дофига всего отменили:
                      http://www.php.net/manual/ru/migration54.incompatible.php

                      И ещё несколько раз отменяли поддержку некоторых видов говнокода.
                      Ответить
      • Да там весь txt метод кривой - защита от призрака чтоли) Чувак наверное не знает для чего ф-и налепил все подряд и радуется)). А еще меня убило шифрование пароля, - очень прочное))
        Ответить
        • md5 уже недостаточно?
          Ответить
          • Во-первых да, больно уж быстро он перебирается на текущем железе. Во-вторых при таком обращении с хешами даже sha2 и sha3 не помогут :)

            man bcrypt, scrypt, соль.
            Ответить
            • а как надо? мне для общего развития. Какую нибудь криптографическую либу юзать?
              Ответить
              • Ну суть в том, что алгоритмы хеширования слишком быстрые (это фича, чтобы ты не состарился, пока считается контрольная сумма для скачиваемой с торрента порнухи). А во вторых - они детерминированные, и одинаковый пароль дает одинаковый хеш (и это тоже фича).

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

                Во-вторых надо считать много итераций хеш-функции и правильно комбинировать их друг с другом: 1000 итераций пользователь даже не заметит, а взломщику придется курить в 1000 раз дольше.

                Один из годных алгоритмов: http://ru.wikipedia.org/wiki/Bcrypt. В последних пыхах он, емнип, даже есть из коробки.

                На крайний случай можно поюзать что-нибудь в духе - salt . '|' . sha1(salt . sha1(password)).
                Ответить
                • То есть необходимо комбинировать хеширование и трансформации. ясненько, спс.

                  Говнокод образовательный)
                  Ответить
                  • В идеале - юзать что-нибудь готовое. В криптографии столько способов прострелить себе ногу...

                    PBKDF2 еще, по идее, можно поюзать. Оно реализуется строчек в 5, если есть изкоробочное sha.
                    Ответить
                    • P.S. А вообще, в идеале надо бы юзать SRP.
                      Ответить
                      • Который на клиентах не поддерживается (если не брать игры близзард).
                        Ответить
                        • Ну реализации на жс же есть. Правда там остается проблема - доверие к серваку.

                          З.Ы. В стиме вообще RSA. Как я понял - они даже своим фронтендам не доверяют, и это рса шифрует на ключ сервера аутентификации.
                          Ответить
                          • > Правда там остается проблема - доверие к серваку.
                            И на этом вопрос закрывается. Суть SRP - клиент не должен доверять серверу, его пароль никогда не попадает в плейнтексте на сервер.

                            >В стиме вообще RSA.
                            Вопрос еще в том, как оно реализовано. В какой-то версии своего SRP близзарасты ухитрились перевернуть байты в модуле, простое число наверняка стало непростым.
                            Ответить
                            • > И на этом вопрос закрывается.
                              Ну, собственно, в том же самом таятся грабли во всяких там "безопасных шифрованных чатиках", в которых шифрование идет на стороне js. Вроде бы сейчас все честно, но кто знает, что-за скрипт сервак подбросит завтра...
                              Ответить
                              • > И на этом вопрос закрывается.
                                Смысл SRP - не нужно доверие к серверу, на случай, если он окажется или фальшивым, или злонамеренным/взломанным. Очевидно, что js криптография этому условию не соответствует и поэтому идет нахер в принципе.
                                Ответить
                                • > Очевидно, что js криптография этому условию не соответствует и поэтому идет нахер в принципе.
                                  А я разве спорю? Я просто дополнил этот факт тем, что любая другая криптография на жс тоже идет нахер по той же самой причине.
                                  Ответить
                                  • Я именно это и сказал. Исключение разве что страница с винта, которая не подгружает ничего внешнего.
                                    Ответить
                                    • > разве что страница с винта, которая не подгружает ничего внешнего
                                      В идеале SRP нужно проводить в уме или на специализированном приборчике в духе смарткарты ;)
                                      Ответить
                                      • На котором пароль вводить? Иначе можно замутить 100лет используемые клиентские сертификаты (втч со смарткарт.)
                                        Ответить
                                        • > На котором пароль вводить?
                                          Ну как-то так. Чтобы "карту" можно было спокойно менять, если она сгорит.
                                          Ответить
                                          • Не-не, ты не понял суть SRP. Единственный секрет в нем- это пароль. И смарткарта modexp не потянет :)
                                            Ответить
                                            • Бля, что-то вы сегодня невпопад флудите.
                                              Пойду троллить на форум, что ли. Счастливо оставаться!..
                                              Ответить
                                              • >Пойду троллить на форум, что ли.
                                                И тебе счастливо. Можешь на локалхосте форум поднять и там троллить.
                                                Ответить
                  • > Говнокод образовательный)

                    Надо Борманду с wvxvw и товарищами собраться и выдавать уже дипломы (говно)кодеров за посещение сайта.
                    Ответить
                    • А смысл во всех этих дипломах?
                      Ответить
                      • Просто товарищ борманд опытный - вот и помогает, для него это пустяки.

                        Я с удовольствием помогу в синтаксисе и либах шарпа, если кому то понадобиться. Это коммуна программистов)
                        Ответить
                        • >> Я с удовольствием помогу в синтаксисе и либах шарпа, если кому-то понадобиться

                          Как обращаться из потоков к элементам гуя? Я понимаю так, что для каждого метода гуя нужно писать потокобезопасный прототип, который и будет вызываться. Но нельзя ли примерчик? тока не с мсдн - там вообще пипец. Чтобы не захламлять эту тему, можешь ответить в любой из старых тем, или не отвечать.
                          Ответить
                          • Совсем по тупому - так
                            control.Invoke(s => (someAction(control, s)), someData);

                            Хотя можно и тупее - отрубаем у контролов проверку каким потоком они юзается

                            System.Windows.Forms.Control.
                            CheckForIllegalCrossThreadCalls = false;


                            Но это черевато.

                            По умному - юзать continuations. Но это уже не от языка зависит.
                            Ответить
                            • > отрубаем у контролов проверку каким потоком они юзается
                              За такое надо руки отрубать. Зачем они вообще это свойство сделали?
                              Ответить
                              • Чтобы юзеру было, с чем сравнить. Пусть юзер сначала набьет себе шишки, раз он так этого хочет.
                                Ответить
                              • Это политика "ты хозяин своего кода и мы ничего тебе не навязываем".
                                Ответить
                        • Кто бы мне помог с юзерскриптом лучше.
                          Ответить
                      • Ну мало ли... Придёт человек на работу, а шеф - Тарас. Посмотрит на диплом - человек свой, проверенный, про сишку, питушков и орлежек знает - можно брать :)
                        Ответить
                        • пароль: крестопроблемы
                          Ответить
                          • отзыв: крестопринципы
                            Ответить
                            • И на всякий случай: траеблядство и собакоёбство.
                              Ответить
                              • а что такое собакоёбство, осмелюсь спросить?
                                и как в нем замешан тарас...
                                Ответить
                                • > собакоёбство
                                  Это то, чем занимаются пыхеры, расставляя подавление ворнингов:
                                  $f = @fopen("1.txt", "r");
                                  > как в нем замешан тарас
                                  Рискну предположить - никак.
                                  Ответить
                                  • а так то пазл складывается иначе, если вспомнить, что кавказцы - http://goo.gl/ZaGqCp
                                    Ответить
                                    • Ах ты ж мать твою налево!
                                      Ответить
                                    • Полегче на поворотах.
                                      http://ok.ya1.ru/uploads/posts/2010-02/1266488067_p5-3-060110-212847.jpg
                                      Ответить
                        • >>Придёт человек на работу, а шеф - Тарас
                          Знакомый базар. Видимо Тарас производит впечатление успешного управленца.
                          http://govnokod.ru/13183#comment182035
                          Ответить
          • Уже давно, щас 6-10 символом рассшифровуются за пару мин, если пароль конечно 60 символов думаю будет норм)
            Ответить
        • Особенно радуют два iconv'а в конце. Видимо чел очень боится китайских и японских иероглифов...

          > шифрование пароля, - очень прочное
          Ну здесь у автора кода все-таки был проблеск разумности, и он все-таки додумался вынести хеширование в отдельную функцию, реализацию которой можно поменять. Обычно все еще печальней - md5(), рассеянные прямо в коде, или вообще plain-text пароли.
          Ответить
          • >> Особенно радуют два iconv'а в конце. Видимо чел очень боится китайских и японских иероглифов...

            Кручу верчу запутать хочу
            Ответить
    • $var = iconv('utf-8', 'windows-1251', $var);
      $var = iconv('windows-1251', 'utf-8', $var);

      Операция подергивание? Или некто решил убить все не-cp1251 символы.
      Ответить
      • Скорее всего второе. Чувак явно боится, что сайт будут юзать китайцы и арабы.
        Ответить
    • А в чем прикол писать по функции в строке?
      Ответить
      • А в чем прикол писать 100500 вызовов в одну строку?
        Ответить
        • Так делают все нормальные люди в нормальных языках. Я пишу по 1 оператору в строчку в питоне потому, что в статике нихуя не ловится и так хоть можно будет больше информации почерпнуть из стектрейса, если по одному вызову в строке, чем если несколько.
          Ответить

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