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

    +4

    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
    function fix_hacker_strings($str){
            $s=$str;
            $s=str_replace('/*', 'xx', $s);
            $s=str_replace('*/', 'xx', $s);
            $s=str_replace('../', 'xxx', $s);
            $s=str_replace('..\\', 'xxx', $s);
            $s=str_ireplace('file:', 'xxxxx', $s);
            $s=str_ireplace(':$', 'xx', $s);
            $s=str_ireplace('http:', 'xxxx', $s);
            $s=str_ireplace('https:', 'xxxxx', $s);
            $s=str_ireplace('script', 'xxxxxx', $s);
            $s=str_ireplace('delete', 'xxxxxx', $s);
            $s=str_ireplace('drop', 'xxxx', $s);
            $s=str_ireplace('select', 'xxxxxx', $s);
            $s=str_ireplace('update', 'xxxxxx', $s);
            $s=str_ireplace('replace', 'xxxxxxx', $s);
            $s=str_ireplace('/etc/', '/xxx/', $s);
            $s=str_ireplace('/var/', '/xxx/', $s);
            $s=str_ireplace('/root/', '/xxxx/', $s);
            $s=str_ireplace('/bin/', '/xxx/', $s);
            $s=str_ireplace('/usr/', '/xxx/', $s);
            $s=str_ireplace('/sys/', '/xxx/', $s);
            $s=str_ireplace('/sbin/', '/xxxx/', $s);        
            $s=str_ireplace('/proc/', '/xxxx/', $s);
            $s=str_ireplace('/boot/', '/xxxx/', $s);
            $s=str_ireplace('mysql', 'xxxxx', $s); 
            return $s;
    }

    обработка user input

    Запостил: dim1r, 08 Февраля 2020

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

    • Этот фильтр не защищает от спама, позвольте мне его улучшить
      $s=str_ireplace('член', 'xxxx, $s);
      $s=str_ireplace('увеличить', 'xxxx, $s);
      $s=str_ireplace('биткоин', 'xxxx, $s);
      $s=str_ireplace('Bank of Nigeria', 'xxxx, $s);
      $s=str_ireplace('One billion', 'xxxx, $s);
      $s=str_ireplace('Центр американского английского', 'xxxx, $s);
      Ответить
      • Метод должен сохранять длину. Садись, два.
        Ответить
      • Напомнило мои фильтры в «NGK».
        if (comment.user_id == 25580 && comment.text.indexOf("Хелло, Вы спрашивали, как заказать") >= 0) {
            return true;
        }
        Ответить
        • Меня как-то черт занес в одну доморощенную ЦМСку, так так вполне в коде было такое

          if (customer.getCompany().equals("ИП \"Тарасевич\"")) {
          Ответить
    • кто отгадает зачем
      $s=str_ireplace(':$', 'xx', $s);

      ?
      Ответить
      • портится доступ к файловым потокам типа file.txt:$DATA
        Ответить
        • хм
          у вас там NTFS на сервере?
          Ответить
          • Зачем нужен сервер, когда можно держать включенным комп с денвером и юзать dyndns.
            Ответить
            • http://www.denwer.ru/

              Пользователи пишут о Денвере
              любая дорога начинается с первого шага — Серега Харук, 2020-02-06
              Начнии делать хоть что-то.......... — Дмитрий Мелюхин, 2020-02-06
              Терпение и упорство помогут в достижении цели! — Константин Истремский, 2020-02-07
              Делай это сейчас — Игорь Авдуевский, 2020-02-07
              Если вы есть, будьте первыми! — Вадим Удалов, 2020-02-07
              кто ищет, тот всегда найдет! — Beatmake.ru - блог музыканта, 2020-02-07
              спасибо — Анна АОВТ, 2020-02-06
              Уже многое знаете? Но это еще только начало — Конст Мит, 2020-02-06
              Терпенье и труд, все перетрут! — Александр Фомин, 2020-02-10
              Не партесь — Bratok Limon, 2020-02-06


              Пиздец, пыхомакаки-то оказывается нихуёвые философы все. Оно и не мудрено, сложно терпеть всё это дерьмо, не выработав особый, философский подход к жизни.
              Ответить
              • >PHP 5.3.13, MySQL 5.1, PostgreSQL 8.4
                охуеть там у них, я тоже хочу в 2007-й!
                Ответить
              • > философский подход
                >> не партесь

                Я тоже хочу следовать этому подходу.
                Ответить
                • [quote]
                  Так.
                  Вздохните. Вздохните глубоко. Тяжело вздохните. Еще раз. Вздохните с
                  облегчением. Еще раз. Посмотрите на все сквозь пальцы. Махните на все рукой.
                  Еще раз. Пожмите плечами. Так.
                  [/quote]
                  Ответить
                • Что такое «парться»?
                  Ответить
              • Форум у них хороший, масса интересных постов
                http://forum.dklab.ru/viewforum.php?f=20
                Ответить
              • какой бугор!!

                Уже лет 10-12 пользуюсь денвером (как он работает - не вникал) - было все ок. Но вот, пришлось установить денвер на windows server 2003 r2. Запустил инсталятор Denwer3_Base_2013-06-02_a2.2.22_p5.3.13_m5.5.25_pma3.5.1_xdeb ug - установилось все норм. После запуска денвера не открывается localhost, а процесс httpd.exe валится через 20-30 сек. после запуска денвера, даже если ничего не трогать, просто сам берет и отваливается.
                Ответить
                • Для серверной винды надо платную версию денвера?
                  Ответить
                  • Хороший вариант. Я бы еще предложит проверить винду на вирусы, и загрузиться в режиме защиты от сбоев
                    Ответить
                    • На самом деле может вылетать из-за запущенного «Скайпа». Он по умолчанию поднимает сервера на портах 80 и 443. Это выключается в настройках.

                      Но я за то, чтобы они покупали платную версию «Денвера» и переустанавливали «Windows».
                      Ответить
                      • Перестановка ж не помогает.
                        Пусть откатываются на XP. Там все работает.
                        Ответить
                • Закопайте «Денвер» и поставьте XAMPP, если не умеете ставить компоненты сами.
                  Ответить
                  • мне птичка напела, что в пыхе есть встроенный сервер
                    зачем мне XAMP?
                    Ответить
                    • Встроенный сервер умеет запускать один php-файл. Это подходит для фреймворков с единой точкой входа, например, для «Zend Framework».

                      Для портянок в стиле «Конардо», где на каждый URL свой php-файл, встроенный сервер не годится.

                      Да потом ещё нужно ставить «MySQL». Хотя можно портировать базу на «SQLite», тогда и СУБД ставить не надо...
                      Ответить
                      • В джанге встроенный сервер всегда работает через одну точку входа (визги) и по умолчанию работает с SQLite :) Именно по этому я за.

                        Кстати, девелопмент сервер есть и в студии. Еще в 2005-й студии для ASP.NET не нужен был IIS
                        Ответить
              • PostPosted [?]: Sun Feb 24, 2008 12:59 pm (написано за 2 минуты 43 секунды)
                Post subject: Куда заливать php файлы Reply with quote
                Всем прива!
                У меня вот такой ламерский вопрос:
                куда мне залить файлы php и html? чтоб выполнялся скрипт простой отправки письма. Все перепробовал, код правильный, заливаю в папку test1/www - не канает, заливаю в subdomen - не канает...
                Оба файла reauest.html и email.php3 заливаю в одну папку...Делал там по книжке какой-то.
                Ответить
                • Какой анскилл )))
                  Ответить
                  • Та же проблема и не могу ее решить.
                    У Вас получилось?

                    Неа, забил, всё так же пользуюсь Web Site X5 evolution 9, взломаным, изучаю Adobe Dreamviewer, но там головняков море. В вебсайт Х5 всё просто как ясный день, но не всё можно что хотелось бы, хотя и не мало, вот сделал за пол-часа: www.коробор.рф
                    Ответить
              • недавно зарегался на одном "специализированном" пхп форуме и задал вопрос в разделе "для опытных", был вопрос по поводу очерёдности опкодов и какого хуя вообще так происходит, в итоге мне посоветовали не писать сложный код... не партятся ребята и хуярят код который подчёркивается коричневым во всех иде
                Ответить
                • phpclub чтоль?:)
                  Ответить
                • У них на форуме охуенные решения проблем пользователей.
                  Денвер не работает из папки, содержащей символ "=" в имени? А хули ты так папку назвал, переименуй и не выебывайся!
                  Денвер не стартует, когда всунут съемный диск? (блять, нахуй оно вообще по другим дискам шарится?) А ты высунь диск, и всё заработает!

                  Где-то еще советовали руками перлоскрипты править, удобно, хули.

                  И такое решение на каждую проблему.
                  Ответить
            • Зачем держать включенным комп, когда можно купить шаред хостинг, и скопировать туда по FTP свой вордпресс?
              Ответить
              • Так деплоить проще. Поправил файлик через блокнот - и всё работает. А иначе еще тотал коммандер ставить, файлы по фтп заливать, пароли там всякие помнить...
                Ответить
                • Да, но ведь тогда хакеры могут взломать мой комп. Нет уж: лучше я предоставлю это админам. Я ПХП программист, и не обязан разбираться в компьютерной безопасности
                  Ответить
                  • А ты не забывай про mysql_real_escape_string(), тогда сайт будет защищенным и комп никто не взломает.
                    Ответить
                    • mysql_real_escape_string, к сожалению,не панацея. Я слышал что у брата моего знакомого сломали сайт даже с mysql_real_escape_string.

                      Потому я всегда удаляю слова DELETE, INSERT и кавычку из всех переменных. Это повышает уровень безопасности
                      Ответить
                      • Еще рекомендуют stripslashes(addslashes()) передернуть. Говорят, от многих хакерских атак помогает.
                        Ответить
                        • addslashes всегда помогает, именно по этому я за \\"PHP\\"
                          Ответить
                        • Имхо лучше наоборот - addslashes(stripslashes()).
                          Ответить
          • >у вас там NTFS на сервере?

            "береженого бог бережет", - сказала монашка, надевая презерватив на свечку
            Ответить
    • Именно поэтому я за Java Script
      Ответить
      • Никто не гарантирует, что если строка попала в систему, то она никогда не навредит. Есть же всякие offline скрипты, которые будут прочесывать базу данных. Кто-то может через shell это обрабатывать, кто-то через awk и тд.
        Ответить
        • Именно поэтому я за «C».
          Ответить
          • Угу. В си настолько хуёво со строками, что их проще безопасно передать, чем поклеить из них дырявый запрос или командную строку... В остальных языках обычно наоборот.
            Ответить
            • А ещё в «C» есть «printf», который сам по себе полный по Тьюрингу (в «POSIX» версии). Именно поэтому…
              https://github.com/HexHive/printbf
              Ответить
              • Ничего не понимаю. Что такое %1d, понятно. А что за выражения с баксами, да ещё с каким-то hn?
                Ответить
    • Вот ублюдок, создал лишнюю переменную $s, мог бы $str использовать, сейчас у крестоблядей сгорит жопа от лишнего бита памяти
      Ответить
    • > delete, drop select, update

      insert забыл!
      Ответить
      • replace еще...

        Трудно писать безопасный код всё таки
        Ответить
        • Удивительно, но replace автор учёл.
          Ответить
          • ничего удивиельного
            опотный пользовать mysql
            Ответить
          • Можно ещё позвать create temporary table и затенить ей какую-то из таблиц... Или через alter что-нибудь сделать с колонками.

            З.Ы. А ещё есть rename и truncate.
            Ответить
        • Кстати, а что такое replace?
          Ответить
          • Это типа update, но работает, как последовательные delete и insert:

            https://dev.mysql.com/doc/refman/5.7/en/replace.html
            Ответить
          • P.S. Чтобы не было совсем скучно, в «MySQL» есть ещё «INSERT ... ON DUPLICATE KEY UPDATE». Приходится вспоминать, чем оно отличается от REPLACE.
            Ответить
            • А чем оно отличается от replace?
              Ответить
              • Я не особо соображаю в этом деле, но рискну предположить, что replace заменяет существующие - не сделает ничего, если питушня уже есть, а insert в любом случае изменит отношение.
                Ответить
              • REPLACE:
                1. Пытается добавить строку через INSERT.
                2. В случае конфликта уникального индекса делает DELETE, а потом INSERT.

                INSERT ... ON DUPLICATE KEY UPDATE:
                1. Пытается добавить строку через INSERT.
                2. В случае конфликта уникального индекса делает UPDATE.

                Разница проявится, если есть колонки с дефолтным значением: оператор REPLACE вставит дефолтное значение у неперечисленных колонок, потому что он сначала удаляет, потом добавляет, а INSERT ... ON DUPLICATE KEY UPDATE сохранит старое значение неперечисленных колонок.

                Ещё там какая-то питушня с автоинкрементами, с констрейнтами и с правами доступа.
                Ответить
        • SET @query = FROM_BASE64('c2VsZWN0ICogZnJvbSB1c2Vycw==');
          PREPARE stmt1 FROM @query; 
          EXECUTE stmt1;


          это да
          Ответить
          • Почти все функции, кроме mysqli_multi_query, не пропускают несколько выражений за один вызов.
            Ответить
            • Именно поэтому я за "PHP"
              Ответить
            • Авто делает не специфичную для «PHP» функцию, а универсальный санитайзер строк:
              >>> Есть же всякие offline скрипты, которые будут прочесывать базу данных. Кто-то может через shell это обрабатывать, кто-то через awk и тд.
              Пожелаем ему удачи!
              Ответить
          • $s=str_ireplace('base64', xxxxxx', $s);

            Исправил, теперь всё безопасно.
            Ответить

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