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

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

Комментарии (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("ИП \"Тарасевич\"")) {
        Ответить
    • портится доступ к файловым потокам типа file.txt:$DATA
      Ответить
        • Зачем нужен сервер, когда можно держать включенным комп с денвером и юзать 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]
                Ответить
            • какой бугор!!

              Уже лет 10-12 пользуюсь денвером (как он работает - не вникал) - было все ок. Но вот, пришлось установить денвер на windows server 2003 r2. Запустил инсталятор Denwer3_Base_2013-06-02_a2.2.22_p5.3.13_m5.5.25_pma3.5.1_xdebug - установилось все норм. После запуска денвера не открывается 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 всё просто как ясный день, но не всё можно что хотелось бы, хотя и не мало, вот сделал за пол-часа: http://www.коробор.рф
                  Ответить
            • недавно зарегался на одном "специализированном" пхп форуме и задал вопрос в разделе "для опытных", был вопрос по поводу очерёдности опкодов и какого хуя вообще так происходит, в итоге мне посоветовали не писать сложный код... не партятся ребята и хуярят код который подчёркивается коричневым во всех иде
              Ответить
              • У них на форуме охуенные решения проблем пользователей.
                Денвер не работает из папки, содержащей символ "=" в имени? А хули ты так папку назвал, переименуй и не выебывайся!
                Денвер не стартует, когда всунут съемный диск? (блять, нахуй оно вообще по другим дискам шарится?) А ты высунь диск, и всё заработает!

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

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

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

          "береженого бог бережет", - сказала монашка, надевая презерватив на свечку
          Ответить
    • Никто не гарантирует, что если строка попала в систему, то она никогда не навредит. Есть же всякие offline скрипты, которые будут прочесывать базу данных. Кто-то может через shell это обрабатывать, кто-то через awk и тд.
      Ответить
        • Угу. В си настолько хуёво со строками, что их проще безопасно передать, чем поклеить из них дырявый запрос или командную строку... В остальных языках обычно наоборот.
          Ответить
  • Вот ублюдок, создал лишнюю переменную $s, мог бы $str использовать, сейчас у крестоблядей сгорит жопа от лишнего бита памяти
    Ответить
    • replace еще...

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

          З.Ы. А ещё есть rename и truncate.
          Ответить
        • P.S. Чтобы не было совсем скучно, в «MySQL» есть ещё «INSERT ... ON DUPLICATE KEY UPDATE». Приходится вспоминать, чем оно отличается от 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» функцию, а универсальный санитайзер строк:
            >>> Есть же всякие offline скрипты, которые будут прочесывать базу данных. Кто-то может через shell это обрабатывать, кто-то через awk и тд.
            Пожелаем ему удачи!
            Ответить
        • $s=str_ireplace('base64', xxxxxx', $s);

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

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

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

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


    8