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

    +162

    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
    if ($_FILES['upfile']['size'] > 0) {
                $fname = $_FILES['upfile']['name'];
                $fcat = $_POST['category'];
                $ext = explode(".", $fname);
                if ($ext[1] == 'txt') {
                    if (!file_exists("$fcat/$fname")) {
                        if ((move_uploaded_file($_FILES['upfile']['tmp_name'], "$fcat/$fname"))) {
                            chmod("$fcat/$fname", 0777);
                            echo 'Текстовой файл успешно загружен! <br />';
                            echo '<a href="index.php?file=' . $fname . '&kat=' . $fcat . '&view=2">Посмотреть</a>';
                        } else {
                            echo 'Ошибка прикрепления файла<br />';
                            echo '<a href="index.php?kat=' . $fcat . '&view=1">Назад</a>';
                        }
                    } else {
                        echo 'Такой файл уже существует<br />';
                        echo '<a href="index.php?kat=' . $fcat . '&view=1">Назад</a>';
                    }
                } else {
                    echo 'Для загрузки доступны лишь файлы, с расширением .txt<br />';
                    echo '<a href="index.php?kat=' . $fcat . '&view=1">Назад</a>';
                }
            } else {
                echo 'Недопустимый размер файла<br />';
                echo '<a href="index.php?kat=' . $fcat . '&view=1">Назад</a>';
            }

    WAP-ENGINE
    Мега зашита при опланде :D

    Запостил: lugaro, 22 Апреля 2010

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

    • про mime type видимо им мало что известно)
      Ответить
      • mime-type, при желании, можно подделать
        Ответить
        • Подделать можно все. И сигнатуру файла тоже. Уровень паранои должен быть какой-то, но не запредельный.

          А код говно. Достаточно закачать файл с именем megahack.txt.php и увидите, что будет.
          Ответить
          • при правильной настройке сервера - ничего :)
            Ответить
            • Само собой, но автора кода это не оправдывает.
              Ответить
      • Ни весь "российский хостинг" работает с mime extension.
        Встречал 2 хостинга, где оное было отключено.

        PS: очень умилило продублированная аж 4 раза ссылка назад -
        echo '<a href="index.php?kat=' . $fcat . '&view=1">Назад</a>';
        Ответить
    • file.txt.php тоже загрузит
      Ответить
    • Достаточно будет регуляркой выбрать имя файла без расширения и прописать своё, тем более опланд предусмотрен только с одним расширением
      Ответить
    • что за слово "опланд"?

      $ext = strtolower(substr(strrchr($file['name'], '.'), 1));

      Я так определяю расширение. А вообще, мне интересен вопрос, как определить, что перед нами именно текстовый файл?
      Ответить
      • Можно пройтись по символам и сравнить, но зачем? Имхо достаточно проверки на .txt, майм и запрета на выполнение скриптов в папке опланда.
        Ответить
        • ЧТО ТАКОЕ ОПЛАНД???
          Ответить
          • Ну я догадываюсь, что это скорее всего "аплоад", но блин это совсем %)
            Ответить
            • просто так звучит как то проще, произнеси вслух аплоад и опланд )
              ЗЫ хз где это слово привязалось хы
              Ответить
              • Вообще говоря "аплоуд" ("у" почти не слышится). Впервые встречаю такое коверканье. Вас сослуживцы за такое не пинают?
                Ответить
                • АПЛОУД <=> ДУОЛАП

                  Почти как диалап. :))

                  Такой вот нофелет.
                  Ответить
            • говносленг
              Ответить
      • Любой файл, даже рисунок, можно считать текстовым (если не ограничиваться только печатными символами)
        Обратное не верно :)
        Ответить
      • >Я так определяю расширение

        О_О
        а я так
        pathinfo($fname, PATHINFO_EXTENSION);
        Ответить
        • pathinfo() возвращает ассоциативный массив, который содержит информацию о пути path. Возвращаемый массив состоит из следующих элементов: dirname, basename и extension.

          прикольно, будем знать ))
          Ответить
          • ненене
            с флагом PATHINFO_EXTENSION возвращает строку
            Ответить
        • Круто!
          Ответить
    • $ext = explode('.', $filename);
      $ext = $ext[count($ext)-1]; =)
      Ответить
      • как же напрягает отсутствие отрицательных индексов в этом вашем пхп =\
        Ответить

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