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

    +1

    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
    24. 24
    25. 25
    26. 26
    27. 27
    28. 28
    29. 29
    30. 30
    31. 31
    32. 32
    33. 33
    34. 34
    35. 35
    36. 36
    37. 37
    38. 38
    39. 39
    40. 40
    41. 41
    42. 42
    43. 43
    44. 44
    45. 45
    46. 46
    47. 47
    ############
    $msg = str_replace('<?','',$msg);
    $msg = str_replace('?>','',$msg);
    $msg = str_replace('^','',$msg);
    $msg = str_replace(';','',$msg);
    $msg = str_replace('<a>','',$msg);
    $msg = str_replace('</a>','',$msg);
    $msg = str_replace('<A>','',$msg);
    $msg = str_replace('</A>','',$msg);
    $msg = str_replace('<br>','',$msg);
    $msg = str_replace('</br>','',$msg);
    $msg = str_replace('</BR>','',$msg);
    $msg = str_replace('<BR>','',$msg);
    $msg = str_replace('<p','',$msg);
    $msg = str_replace('align','',$msg);
    $msg = str_replace('http://','',$msg);
    $msg = str_replace('wap','',$msg);
    $msg = str_replace('WAP','',$msg);
    $msg = str_replace('ru','',$msg);
    $msg = str_replace('RU','',$msg);
    $msg = str_replace('com','',$msg);
    $msg = str_replace('COM','',$msg);
    $msg = str_replace('h2m','',$msg);
    $msg = str_replace('H2M','',$msg);
    $msg = str_replace('WEN','',$msg);
    $msg = str_replace('wen','',$msg);
    $msg = str_replace('гu','',$msg);
    $script = "waphak.ru";
    $msg = str_replace('ГU','',$msg);
    $msg = str_replace('HTTP://','',$msg);
    $msg = str_replace('exit;','',$msg);
    $msg = str_replace('EXIT();','',$msg);
    $msg = str_replace('exit();','',$msg);
    $msg = str_replace('()','',$msg);
    $msg = str_replace('<java','',$msg);
    $msg = str_replace('<JAVA','',$msg);
    $msg = str_replace('</java','',$msg);
    $msg = str_replace('</JAVA','',$msg);
    $msg = str_replace('javascript','',$msg);
    $msg = str_replace('JAVASCRIPT','',$msg);
    $msg = str_replace('</','',$msg);
    $msg = str_replace('</SCRIPT','',$msg);
    $msg = str_replace('</script','',$msg);
    $msg = str_replace('alert','',$msg);
    $msg = str_replace('\r','',$msg);
    $msg = str_replace('\n','',$msg);
    ########################

    Регулярные выражения? Не слышали!

    Запостил: lionovsky, 02 Ноября 2020

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

    • Да тут сама идея тупая. Удалим «com» и «ru» во всём тексте. И во что тогда могут превратиться английские слова?
      Ответить
    • стесняюсь спросить, а какую бизнес-задачу решает этот код?

      Регулярка разумеется была бы быстрее (так как не пришлось бы начинать поиск снова и снова), но сама идея кажется мне странной
      Ответить
      • > какую бизнес-задачу решает этот код?
        Шоб не похакали!

        Типичный уеб-разработчик услышал что-то про «XSS» и не придумал ничего умнее, чем.
        Ответить
        • > $msg = str_replace('<?','',$msg);
          это попытка защиты от вставки PHP кода?

          Всё даже хуже, чем я думал
          Ответить
          • Да, такие уязвимости вполне себе встречаются.
            Ответить
          • а H2M это што?
            M2M знаю, а H2M это хуман? хомо? хироскутер?
            Ответить
            • Human-to-Many. Промискуитет
              Ответить
            • Helicopter.
              Ответить
            • янашел

              H2M это "Harmful To Minors", типа 18+
              https://cwkoopman.wordpress.com/2009/02/28/whats-wrong-with-lessigs-harmful-to-minors-tag/
              Ответить
              • а WEN?
                Ответить
                • WEN.RU — конструктор вап-сайтов.

                  http://wen.ru/html/?what
                  Ответить
                • не знаю)
                  http://wen.ru/html/?what

                  Наш сервис представляет собой систему, позволяющую делать достаточно мощные и функциональные WAP-сайты прямо с Вашего мобильного телефона, причем совершенно БЕСПЛАТНО!
                  Ответить
            • Бывший некогда бесплатный хостинг сайтов (с поддержкой пхп!) h2m.ru
              Ответить
      • Обработка поля "о себе" перед записью в базу.

        Судя по "логике", это должно было "защитить" от XSS и ссылок на сторонние сайты. Но чот вышло не очень.
        Ответить
        • не все HTML таги перечислили потому что
          Ответить
          • И ещё не все домены: org, net, info, ua, cx, xyz не удаляет.
            Ответить
            • проще удалить все английские буквы
              Ответить
              • Можно разрешить только percent-encoding питушню
                Ответить
              • Ну да. Зачем на русском сайте пиндосские буквы? Тем более в разделе "о себе".
                Ответить
                • Тебе смешно, а в «Ответах Mail.ru» новичкам не дают использовать латиницу в ответах, чтобы они не могли оставить ссылку, даже разбодяжив её пробелами.

                  Новичкам приходится набирать баллы тупыми ответами, чтобы подняться до следующего уровня и наконец получить возможность использовать латиницу.
                  Ответить
                • чтобы написать: "-=haker=-"
                  Ответить
    • $msg = str_replace('</','',$msg);
      $msg = str_replace('</SCRIPT','',$msg);
      $msg = str_replace('</script','',$msg);

      Последние две замены никогда не отработают же. X)
      Ответить
    • Даже если делать это на регексах, то всё равно неоптимально.
      Должна быть либа, которая делает это быстро.
      Я кстати искал - не нашёл.
      Я бы, если реализовывал её, то построил бы дерево символов, то есть дерево вида:
      <
        |-?
          |- S
            |- C
              |- R
                 |- I
      ...
        |- A
      ...

      И по нему бы уже выявлял. Только вот думаю, что в пхп это бесполезно, так как каждый раз при вызове скрипта дерево будет строится по новой, я прав насчет последнего?
      Ответить
      • Алгоритм Ахо-Корасек. Его автомат даже чуть оптимальнее твоего дерева.
        Ответить
      • дерево можно хранить в memcache, но если построить его один раз, то уже будет лучше
        Сейчас там алгоритм Шлемы зе Пеинтера
        Ответить
      • О, в пхп есть fork https://www.php.net/manual/ru/function.pcntl-fork.php.
        Можно создать подпроцесс хранящий это дерево в ОЗУ постоянно и взаимодействовать с ним, значит имеет смысл и в пхп это реализовать.
        Ответить
        • Ага, а потом пойти дальше и продавать доступ к этому сервису валидации строк.
          Ответить
          • Да нет, если будет время и желание: реализую и выложу на гитхаб.
            Ответить
            • Зачем? Зачем?
              Ответить
              • Тупо ради интереса, и найти либу для фильтрации XSS\SQL инъекций не мог.
                Ответить
                • >либу для фильтрации XSS\SQL

                  Такой либы быть не может, потому что код недолбоёба физически не может содержать SQL инъекции и XSS. А коду долбоёба никакая либа не поможет

                  Кто вообще придумал удалять что-то из пользовательского ввода? Покажите мне эту обезъяну
                  Ответить
                  • Расмус? Кто ещё до волшебных кавычек мог додуматься.
                    Ответить
                    • Именно по этому я против \\\\\\"PHP\\\\\\"
                      Ответить
                    • Хорошо, что я их не застал, и даже не знаю что это такое.
                      Ответить
                      • да ладно "не застал", ты уже в школе учился, когда их депрекейтнули
                        Ответить
                        • В школе никогда не изучают передний край науки и технологий. Отставать лет на двадцать от прогресса для школьной программы нормально.
                          Ответить
                          • думаешь, в школе изучают мэджик квоц?

                            кстати, во многих школах до сих пор изучают паскаль, и это единственное, что люди делают правильно
                            Ответить
                            • Што гэта?
                              Ответить
                              • не зразумеў, што "што гэта"?
                                Ответить
                                • «мэджик квоц»
                                  Ответить
                                  • https://en.wikipedia.org/wiki/Magic_quotes
                                    Ответить
                                    • Я думаю, в школе не изучают «PHP».
                                      Ответить
                                      • Пока нет, но ведь всё становится хуже
                                        Ответить
                                        • Если в школе сейчас будут изучать «PHP», то будет пиздец: неюникодные функции, мэджик квоц и что там ещё в «PHP» в 1999 году было.
                                          Ответить
                                          • а вот и первый урок
                                            https://habr.com/ru/sandbox/67436/

                                            >в 1999 году было.

                                            GET парамтеры отправлялись прямиком в переменную $param_name
                                            Ответить
                                            • >> <? echo "Hello World"; //This is echo ?>

                                              Шорттэги, которые могут быть отключены.

                                              >> для пользователей Windows я рекомендую Denwer

                                              Фу, бля, фу, нахуй. Какой же он пидарас...

                                              >> Мы видем

                                              Пристрелите его, кто-нибудь.
                                              Ответить
                                              • там остальные ссылки тоже огонь
                                                https://habr.com/en/sandbox/140948/

                                                register.php опять каша какая-то, причем небось и без соли, правда хоть без инъекций

                                                Любой туториал -- говно
                                                Ответить
                                                • https://habr.com/en/sandbox/143370/

                                                  какая многопоточность))
                                                  Ответить
                                          • Ну, а Paskell в каком коду был?
                                            Ответить
    • https://ibb.co/JtWLqpq

      Когда я перехожу по ссылке с бормандстока, чзх?
      Ответить
      • «Говнокод» вчера забанили в России по решению МВД.
        Ответить
        • Так я могу на него зайти без обхода сейчас, если просто из адресной строки.
          Ответить
          • Из адресной строки на http или https заходишь? Возможно провайдер полностью убил https, а по http более тонко фильтрует.
            Ответить
            • Да, через HTTP только заходит.
              Странно, ведь блок идет на DNS.
              Ответить
              • Мобильные опсосы давным-давно умели в анализ трафика (для своих грязных целей). Поэтому они и к блокировкам конкретных страниц по http были готовы. А в https не определить какую страницу юзер открывает, поэтому целиком.
                Ответить
              • Через DNS блокировали отдельные провайдеры лет 10 назад, когда ещё не было никаких законов о блокировках. Сейчас блокировка через DNS вроде уже не используется. Во-первых, её легко обойти, во-вторых, она не позволяет блокировать отдельные страницы.

                С момента принятия закона о блокировках интернет-провайдеры анализируют трафик.
                Ответить
      • Кстати, Олег, для создания скриншотов рекомендую использовать https://app.prntscr.com/ru/, ну или на крайний случай сочетание «Alt+PrtScr».
        Ответить
        • на винде рекомендую Windows+Shift+S(в свежей десятке) но у Олега же КДЕ, не винда?
          Ответить
          • > Windows+Shift+S
            Круто, не знал. Но «prntscr» всё равно круче: там скриншот сразу же можно редактировать (стрелочки, подписи, все дела).
            Ответить
            • ты не поверишь, но я узнал про это читая "whats new" в очередном апдейте)
              Ответить
          • кстати, это телега и воцап в оперу встроены, как в franz/ferdi? тогда странно, почему скайп отдельно
            Ответить
        • Я использую import из ImageMagick или xwd.
          Ответить
          • я на прыщах тоже
            у меня в WM на хотки набайджин примернотакой питух
            DATE=`date +"%F_%H-%M-%S"`
            xwd -root -display :0 | convert - jpg: >/home/MAPTbIwKA/$DATE.jpg


            умные люди советуют переделать на
            "import -window root ", чтобы не делать convert, но я всё время забываю
            Ответить
            • А я наивный убунтёнок и юзаю gnome-screenshot.
              Ответить
              • оно само работает по ctrl/shift/alt+prtscrn, зачем ещё какие то питухи, что за прыщеболь
                Ответить
                • Спасибо за shift + prntscrn. Я ради него и вызывал тулу.
                  Ответить
              • на самом деле в KDE и xfce и в ообще в любом DE есть для этого тул, я сам выебнулся, и отказался от DE, и теперь у меня всё своё, все с огорода
                Ответить
                • > все с огорода

                  с помойки
                  Ответить
                  • ну у меня правда с помойки: слака, cwm, половина всего самосборого, кастомные скрипты для изменения яркости экрана (которые срут в /sys/.. и навешаны на спец кнопку через acpid / handler.sh), alsamixer для звука, и вот принтскрин через шелскрипт

                    когда нить заебет кончно, и поставлю себе debian с KDE
                    Ответить
                    • > слака

                      Чому не линух фром скретч?
                      Ответить
                      • а может и стоит попробовать, лол)

                        просто слака был мой первый дистр, с тех пор я им дома и пользуюсь, правда еще был генту одно время
                        Ответить
                        • Попробуй, один хер в слаке нет пакетного менеджера. А слакбилды/ебилды куда угодно можно притащить.
                          Ответить
                          • Пакетный менеджер есть, просто он не хендлит зависимости:)

                            Установить/обновить/удалить пакет я всегда могу
                            Ответить
                            • Ну такой менеджер ты и сам за 5 минут запилишь...

                              Кстати, там вроде ещё скрипт можно было подложить чтобы он выполнился при установке пакета.
                              Ответить
                              • Так точно: "install/doinst.sh"

                                Слака вся состоит из того, что пишется за пять минут чуть менее, чем полностью:)

                                Реальный пример
                                * Крутая утилита https://www.slackbook.org/html/x-window-system-xwmconfig.html
                                * Её код https://pastebin.com/b5uj8k8d
                                Ответить
              • У меня по prtscrn вызывается xfce4-screenshooter, я им тоже иногда пользуюсь, но удобнее бывает через import рамочкой выделять область.
                Ответить
        • А на хакбуке кнопки PrtScr нет. Приходится фотографировать экран мобильником. :(
          Ответить
          • это какой-то особый подвид макбука?
            Ответить
            • Это для любителей анального BDSM: берешь обычный PC, читаешь форумы, правишь ACPI таблицы, пытаешься запустить на нем OS X, она виснет, снова правишь ACPI таблицы, более-ли-менее начинает работать, приходит минорное обновление, все ломается, опять правишь таблицы, ходишь на форум, гордишься
              Ответить
              • Это для тех, у кого на gentoo и arch уже не стоит?
                Ответить
                • только в отличие от них толку от этого действия ноль
                  Ответить
                  • Ну как, это же всё ради процесса...

                    Именно поэтому у меня уже который год убунта на дефолтах. Заебало.

                    А пару-тройку программ и там собрать можно.
                    Ответить
                    • пока ты ебешся с гентйо и арчой ты больмень прокачиваешся в прыщах, понимаешь как собирается софт, как запускаются иксы, как запускается DE, как собирается едро итд. А что ты изучаешь хакинтошась?
                      Ответить
                      • На хакинтошась ты понимаешь что тебе нужен новый хакинтошь и пора тебе покупать новый рот, а то старый порвался уже и устал(((
                        Ответить
                      • Править ацпи таблицы же.
                        Ответить
                        • Это довольно бесполезный скилл за пределами хакинтоша.
                          Если бы в процессе они изучили работу ACPI и научились бы понимать ASL, то это был бы неплохой скилл, но они нет:
                          https://4pda.ru/forum/index.php?showtopic=84979&st=720

                          ебаное шаманство
                          Ответить
                          • А, я думал там асл декомпилят и в него что-то вхерачивают...
                            Ответить
                            • вхерачивают
                              https://4pda.ru/forum/index.php?showtopic=980160

                              >Используйте файл DSDT.dsl , а не .aml
                              каокй багор))
                              Ответить
                  • > толку ноль

                    А как под айфон кодить, если на мак не хватило?
                    Ответить
                    • Во-первых лицензия разраба всё равно стоит $99 в год. Без нее ты сможешь запускаться только на своем айфоне (а до недавного времени вообще только в эмуляторе), хотя у мака наверное мышка примерно столько и стоит.

                      Во-вторых Xcode и так не самая стабильная в мире программа, а что будет если на хакинтоше из говна и палочек подебажить им свое приложение в айфоне или эмуляторе или попрофилировать его инструменцами -- тут даже страшно подумать. Нужно быть очень смелым человеком, чтоб так делать, конечно
                      Ответить
                      • > только на своём

                        Ну и норм. А дальше в опенсурс и пусть сами собирают под свой.
                        Ответить
                        • пользователи apple так именно и делают всегда)
                          Ответить
                      • Это что же, эпл просто так любому за $99 продает лицензии? А как же платные курсы, платные экзамены, допуск к праву на вклад в экосистему? Звучит как наебалово
                        Ответить
                        • Так твою программу потом еще могут не допустить в магазин, если она не соответствует духу эппл.

                          Можешь купить коммерческую лицензию на 399, и распостранять ее сам среди своих поклонников, они они будут должны явно согласиться доверять твоему сертификату
                          Ответить
                        • Я почему-то всегда считал, что за $999. А тут нищебродство какое-то.
                          Ответить
                          • За 999 тебе комп нужен

                            А софт бесплатный, кстати: и IDE, и профайлер, и OS. А когда-то давно OS была платная, но дешевле винды.

                            А вот студии у MS бесплатные стали совсем недавно. Раньше бесплатными были только express кастраты
                            Ответить
                            • Notepad++.
                              Ответить
                            • > софт бесплатный

                              Включен в цену железа.
                              Ответить
                              • угу) маркетинг жеж


                                Кабель USB 2.0 длиной 2 метра позволяет подключить ваш iPhone, iPad или iPod с разъёмом Lightning к порту USB на компьютере для синхронизации и зарядки

                                2 990.00 pyб.
                                Ответить
                            • > MS бесплатные стали совсем недавно
                              для организаций не более 1,95 разрабов и 9,95 компьютеров?
                              Ответить
                              • 4.99 разрабов, при этом у тебя в конторе должно быть не более 249.99 компов, а доход не должен превышать $0.99M
                                Ответить
                                • у жыдбрейнс скидос 50% на 9.99 разрабов и если контора стартап (вроде подняли с 2.99 до 4.99 лет)
                                  https://www.jetbrains.com/ru-ru/store/startups/
                                  Ответить
                                  • А ещё можно стать Microsoft MVP, Google Expert или Java Champion и юзать их софт бесплатно.
                                    Ответить
                                    • Стал твоим анальным ловером, проверь.
                                      Ответить
                                    • ну да, потому что это инфлюенсеры или опиньон мейкеры всё (не знаю, вчем разнице)
                                      Ответить
                                      • Известно ли тебе, отчего сперма то жидкая, то погуще?
                                        Ответить
                              • коммьюнити вроде всем бесплатные, не?

                                Я могу путать. Но всякой групварной фигни типа TFS там нет
                                Ответить
                              • Кстати, опенсурс* и дрова можно хуярить бесплатно хоть тыщей разрабов.

                                * по одобренным Open Source Initiative лицензиям
                                Ответить
                                • угу, и JB

                                  только надо сначала доказать, что ты опенсурс
                                  Ответить
                                  • А как это делается? Проверяют значимость твоих реп на гитхабе?
                                    Ответить
                                    • У JB вроде проверяют, что тебе более полугода, и что у тебя есть звездочки на гитхабе

                                      Но вообще это легко определить кмк: у опенсурса есть пользователи, форум или рассылка, документация, итд.
                                      Ответить
                                • >дрова
                                  а подписать бесплатно -- хуй?
                                  Ответить
                                  • Сама подпись от майков вроде бесплатна сейчас. А вот регистрация во всём этом - х.з. Ну и свой EV серт вроде нужен.
                                    Ответить
                                    • EV это когда твой ООО "Вектор" реально пруфят?

                                      Кстати, у ябла для ентерпрайза (который за 399) тоже нужна оффлайновая проверка

                                      Там питух живой звонит, и говорит с тобой по телефону
                                      Ответить
              • а кобенации виндового макбука, у которого тоже нет выделенной кнопки пртскптрзд, не подойдут?
                там че то про Fn+F11, возможно, с шивтом
                по памяти
                Ответить
      • Олег, а ты smb вайршарком снифишь, и читаешь MSные проты?

        Хочешь книжку про SMB1 и NetBios? Оно не актуально, но полезно для понимания основ
        http://www.ubiqx.org/cifs/
        Ответить
    • питухи, напомните плз
      void neTyXHyTb(const Petuh& pe);
      
      //и далее по коду
      neTyXHyTb(Petuh{42, "kokokko"});

      тут создается онанимный объект, передается на него ссылка, и сразу после питухания питух будет уничтожен, врено?

      То есть по сути анонимный питух живет на стеке вызывающей стороны и только: никакого говнокопирования и говномува тут быть не должно?


      Но умный компилятор может наверное смекнуть, и создать питуха прямо внутри функции питушения?

      причем фишка именно в "const ref", потому что иначе бы питухание могло мудифицировать питуха, а не понятно кого мудифицировать, если он всё равно врвмененый?
      Ответить
      • Да, будет временный объект, который живёт до конца стейтмента. Внутрь функции его создание попадёт только если она проинлайница.

        З.Ы. Хочешь выучить кресты за месяц?
        Ответить
      • Короче пишут что const ref чтобы неявные касты не вызывали разрыв мозга и жопы:

        int x = 0;

        // здесь временный дабл, но всё работает интуитивно
        void foo(const double& y);
        foo(x);

        // а здесь запись в y будет проёбана т.к. она попала во временный дабл вместо x
        // поэтому такой код решили запретить
        void bar(double& y);
        foo(x);

        З.Ы. Забавно, что иногда кресты задумываются о наименьшем удивлении.
        Ответить
        • В mingw был подобный баг. Ну, или магия, хз.
          Ответить

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