На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Serafim, fatalist
Страницы: (2) [1] 2  все  ( Перейти к последнему сообщению )  
    > прверка рисунка на вшивость
      как сделать чтобы файлы больше 100 кб и форматы отличные от gif, png, jpg на сервер не закачивались

      ExpandedWrap disabled
        if($_FILES[file][size]<102400)
        {
        if($_FILES[file][type]=="gif"||$_FILES[file][type]=="png"||$_FILES[file][type]=="jpg")
        {
        //код закачки на сервак
        }
        }


      вот этот вот код при файле 30кб jpg не работатет :wall:
        Цитата sanweb @
        вот этот вот код при файле 30кб jpg не работатет

        http://phpfaq.ru/debug
        http://php.net/getimagesize

        Добавлено
        Цитата sanweb @
        //код закачки на сервак
        Садись, два. К тому времени, когда скрипт запущен - файл УЖЕ закачан на сервак.
          Цитата SiMM @
          К тому времени, когда скрипт запущен - файл УЖЕ закачан на сервак.
          он закачан в куда-то в /tmp, и сдохнет после завершения скрипта ...
          В общем с известной натяжкой "кодом закачки на сервак" можно считать move_uploaded_file.

          Добавлено
          sanweb, подробнее.
          print_r($_FILES); хотя б глянь...
            он в темп закачан!!!!
            да какая разница какой код!
            мне нужно чтобы код обрабатывался при соблюдении условий!

            if($_FILES[file][type]=="gif"||$_FILES[file][type]=="png"||$_FILES[file][type]=="jpg")
            заменю на getimagesize
              sanweb, с тебя следующее:
              - вывод ошибок/варнингов, если есть
              - вывод функции print_r($_FILES)
              - кавычки в индексах массива
              тогда будем говорить дальше.

              M
              И внимательное курение http://www.php.net/manual/ru/features.file-upload.php ибо там все написано!!!
              Сообщение отредактировано: Рысь -
                Цитата sanweb @
                $_FILES[file][type]=="jpg"

                :D
                Цитата
                $_FILES['userfile']['type']
                Mime-тип файла, в случае, если браузер предоставил такую информацию. Пример: "image/gif".

                Добавлено
                Цитата Pr0[)!9Y @
                если браузер предоставил такую информацию

                Так что неплохо бы самому отрезать расширение и проверять.
                Цитата sanweb @
                if($_FILES[file][size]<102400 AND ($_FILES[file][type]=="gif"||$_FILES[file][type]=="png"||$_FILES[file][type]=="jpg"))
                {
                //код закачки на сервак
                }
                Заче вложенность плодить для такой задачи? Разница то небольшая, но так удобнее

                Добавлено
                http://php.net/pathinfo

                Добавлено
                Еще вариант:
                ExpandedWrap disabled
                  preg_match('/.(gif|png|jpg|jpeg)/i',$_FILES['userfile']['name'])
                Сообщение отредактировано: Pr0[)!9Y -
                  сменя закрытие темы
                  все получилось гетимыджсайзом!
                  всем спасибо! :D

                  а в ифе при проверке типа я писал image/jpg
                  это я для краткости написал только расширение
                  Сообщение отредактировано: sanweb -
                    Это как? Если размер определился то картинка иначе нет, так чтоли?
                    Изврат.
                      размер определяю как и раньше а тип гетимжсайзом!
                        Расширение всё равно проверять надо. Если файл доступен по HTTP и лежит в папке, где отрабатываются PHP-скрипты.

                        Добавлено
                        Либо менять его принудительно.
                          Цитата
                          ...и форматы отличные от gif, png, jpg на сервер не закачивались...
                          The getimagesize() function will determine the size of any GIF, JPG, PNG, SWF, SWC, PSD, TIFF, BMP, IFF, JP2, JPX, JB2, JPC, XBM, or WBMP...
                          Нестыковочка
                          Такая проверка извращение по-моему, зная заведомо что это не картинка прогонять ее через такую обработку...нехорошо.
                          Вроде как она для этого не предназначена :blink:

                          Добавлено
                          Цитата SiMM @
                          Расширение всё равно проверять надо. Если файл доступен по HTTP и лежит в папке, где отрабатываются PHP-скрипты.
                          Хм, не поверил - решил проверить.
                          И действительно! Дописываем в гиф файл пхп код, переименовываем в .php и о чудо! Он прекрасно исполняется и проходит проверку с помощью getimagesize. Вот и уязвимость...
                          Сообщение отредактировано: Pr0[)!9Y -
                            ну вопервых проверку проходят только картинки
                            вовторых форма лежит в админке
                            в третих это форма выбора файла для аттача в емайл

                            в четвертых я никогда не сохранял бы такие картинки в одной папке с пхп скриптами
                            котлеты отдельно мухи отдельно!

                            PS: а каким образом в гиф файл дописать пхп код?

                            тоесть открываеш гиф в блокноте дописываеш пхп код переименовываеш в пхп
                            и скрипт это воспринимает как рисунок да еще и исполняет? крутооооооо.....

                            тааак
                            а какие еще баги в пхп есть? :ph34r:
                            Сообщение отредактировано: sanweb -
                              Цитата sanweb @
                              ну вопервых проверку проходят только картинки
                              Ты никогда не знаешь что закачает пользователь! (он по определению хакер)
                              Цитата sanweb @
                              вовторых форма лежит в админке
                              Как только хакер попал в админку, он ищет чего бы такого сотворить (выполнить произвольный код)
                              Цитата sanweb @
                              в четвертых я никогда не сохранял бы такие картинки в одной папке с пхп скриптами
                              А ты их сохраняешь куда? В папку (например images), и почему то я уверен что в этой папке наверняка скрипты тоже имеют право исполнятся ;)
                              Цитата sanweb @
                              PS: а каким образом в гиф файл дописать пхп код?
                              По секрету и только тебе :D
                              ExpandedWrap disabled
                                notepad
                                и как сделать чтобы скрипт закачки такие видоизмененные файлы не исполнял?

                                закачивать их в папку где скрипты не имеют право на исполнение или как?
                                этож тогда можно ломануть любой сайт где есть форма закачки! а эта фигня только с гифами?
                                с какими графическими расширениями такое еще моно проделать?
                                  Цитата sanweb @
                                  а какие еще баги в пхп есть?

                                  Была тут тема разок, но ее благополучно забили >:(

                                  2Moders:
                                  Может создадим топик с багами идырами распросраненными? И не будем пинать мол в нете много материала? И все это ламерство и гуру все знают. Для новичков и то полезно будет.

                                  Добавлено
                                  Цитата sanweb @
                                  с какими графическими расширениями такое еще моно проделать?
                                  Предполагаю что с любыми, потому что чаще всего информация о изображении сосредоточена в начале и функция не смотрит на окончание файла.
                                  Цитата sanweb @
                                  этож тогда можно ломануть любой сайт где есть форма закачки! а эта фигня только с гифами?

                                  Навряд ли, потому что вряд ли на многих сайтах есть такая некорректная (имхо) проверка.

                                  Цитата sanweb @
                                  и как сделать чтобы скрипт закачки такие видоизмененные файлы не исполнял?

                                  Проверять расширение самостоятельно

                                  ExpandedWrap disabled
                                    preg_match('/.(gif|png|jpg|jpeg)/i',$_FILES['userfile']['name'])

                                  pathinfo()
                                  Сообщение отредактировано: Рысь -
                                  0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                  0 пользователей:


                                  Рейтинг@Mail.ru
                                  [ Script execution time: 0,0460 ]   [ 15 queries used ]   [ Generated: 27.07.24, 03:34 GMT ]