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

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
  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 lionovsky, (Updated )

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

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

    Регулярка разумеется была бы быстрее (так как не пришлось бы начинать поиск снова и снова), но сама идея кажется мне странной
    Ответить
  • $msg = str_replace('</','',$msg);
    $msg = str_replace('</SCRIPT','',$msg);
    $msg = str_replace('</script','',$msg);

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

    И по нему бы уже выявлял. Только вот думаю, что в пхп это бесполезно, так как каждый раз при вызове скрипта дерево будет строится по новой, я прав насчет последнего?
    Ответить
    • Алгоритм Ахо-Корасек. Его автомат даже чуть оптимальнее твоего дерева.
      Ответить
    • дерево можно хранить в memcache, но если построить его один раз, то уже будет лучше
      Сейчас там алгоритм Шлемы зе Пеинтера
      Ответить
      • Ага, а потом пойти дальше и продавать доступ к этому сервису валидации строк.
        Ответить
        • Да нет, если будет время и желание: реализую и выложу на гитхаб.
          Ответить
            • Тупо ради интереса, и найти либу для фильтрации XSS\SQL инъекций не мог.
              Ответить
              • >либу для фильтрации XSS\SQL

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

                Кто вообще придумал удалять что-то из пользовательского ввода? Покажите мне эту обезъяну
                Ответить
                • Расмус? Кто ещё до волшебных кавычек мог додуматься.
                  Ответить
                  • Хорошо, что я их не застал, и даже не знаю что это такое.
                    Ответить
                    • да ладно "не застал", ты уже в школе учился, когда их депрекейтнули
                      Ответить
                      • В школе никогда не изучают передний край науки и технологий. Отставать лет на двадцать от прогресса для школьной программы нормально.
                        Ответить
    • «Говнокод» вчера забанили в России по решению МВД.
      Ответить
      • Так я могу на него зайти без обхода сейчас, если просто из адресной строки.
        Ответить
        • Из адресной строки на 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? тогда странно, почему скайп отдельно
          Ответить
        • я на прыщах тоже
          у меня в WM на хотки набайджин примернотакой питух
          DATE=`date +"%F_%H-%M-%S"`
          xwd -root -display :0 | convert - jpg: >/home/MAPTbIwKA/$DATE.jpg


          умные люди советуют переделать на
          "import -window root ", чтобы не делать convert, но я всё время забываю
          Ответить
            • оно само работает по ctrl/shift/alt+prtscrn, зачем ещё какие то питухи, что за прыщеболь
              Ответить
            • на самом деле в KDE и xfce и в ообще в любом DE есть для этого тул, я сам выебнулся, и отказался от DE, и теперь у меня всё своё, все с огорода
              Ответить
                • ну у меня правда с помойки: слака, cwm, половина всего самосборого, кастомные скрипты для изменения яркости экрана (которые срут в /sys/.. и навешаны на спец кнопку через acpid / handler.sh), alsamixer для звука, и вот принтскрин через шелскрипт

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

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

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

                            Кстати, там вроде ещё скрипт можно было подложить чтобы он выполнился при установке пакета.
                            Ответить
            • У меня по prtscrn вызывается xfce4-screenshooter, я им тоже иногда пользуюсь, но удобнее бывает через import рамочкой выделять область.
              Ответить
      • А на хакбуке кнопки PrtScr нет. Приходится фотографировать экран мобильником. 🙁
        Ответить
          • Это для любителей анального BDSM: берешь обычный PC, читаешь форумы, правишь ACPI таблицы, пытаешься запустить на нем OS X, она виснет, снова правишь ACPI таблицы, более-ли-менее начинает работать, приходит минорное обновление, все ломается, опять правишь таблицы, ходишь на форум, гордишься
            Ответить
                • Ну как, это же всё ради процесса...

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

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

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

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

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

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

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

                          А вот студии у MS бесплатные стали совсем недавно. Раньше бесплатными были только express кастраты
                          Ответить
                            • угу) маркетинг жеж


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

                              2 990.00 pyб.
                              Ответить
                          • > MS бесплатные стали совсем недавно
                            для организаций не более 1,95 разрабов и 9,95 компьютеров?
                            Ответить
                            • 4.99 разрабов, при этом у тебя в конторе должно быть не более 249.99 компов, а доход не должен превышать $0.99M
                              Ответить
                            • коммьюнити вроде всем бесплатные, не?

                              Я могу путать. Но всякой групварной фигни типа 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);

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

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

Где здесь C++, guest?!

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


    8