обезопасить сервер при загрузке картинок
Модераторы: SLEDopit, Модераторы разделов
-
- Сообщения: 977
- ОС: BSD/LINUX
обезопасить сервер при загрузке картинок
Привет.
Сервер на системе freebsd.
софт nginx/php.
Старший менеджер проекта дал распоряжение разрешить подгружать картинки в отзывы любому пришедшему на сайт пользователю.
Как в таком случае максимально обезопасить, что бы не взломали?
Сервер на системе freebsd.
софт nginx/php.
Старший менеджер проекта дал распоряжение разрешить подгружать картинки в отзывы любому пришедшему на сайт пользователю.
Как в таком случае максимально обезопасить, что бы не взломали?
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
-
- Модератор
- Сообщения: 20998
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: обезопасить сервер при загрузке картинок
Убедиться, что сервер имеет права на запись только в каталог, предназначенный для картинок. Убедиться, что он настроен на выполнение кода, лежащего в других каталогах. Проверять по содержимому, что загружаемые файлы — действительно картинки.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 977
- ОС: BSD/LINUX
Re: обезопасить сервер при загрузке картинок
не понял, это как?Bizdelnick писал: ↑26.06.2024 19:08что сервер имеет права на запись только в каталог, предназначенный для картинок. Убедиться, что он настроен на выполнение кода, лежащего в других каталогах.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
-
- Модератор
- Сообщения: 20998
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: обезопасить сервер при загрузке картинок
Обычно. Что именно непонятно?
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 977
- ОС: BSD/LINUX
Re: обезопасить сервер при загрузке картинок
как это проверить, каждый файл php у сайта проверять что ле, не пойму.
Настройка BSD систем
Знание сила, незнание Рабочая сила!
Знание сила, незнание Рабочая сила!
-
- Модератор
- Сообщения: 20998
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: обезопасить сервер при загрузке картинок
Вообще никакого отношения к php ответ не имеет. Сугубо настройки сервера и прав на каталоги.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 209
- ОС: Gentoo Xfce4
Re: обезопасить сервер при загрузке картинок
Для проверки, что пользователь грузит именно картинку, у PHP есть суперглобальный массив $_FILES с параметром enctype="multipart/form-data" и типом => image/(расширение).
Обвешайте в форме кода это всё if'ами (проверками на условия) типа если [type] === image/jpeg, то по кнопке button происходит мув_аплоадед_файл(), else файл не является картинкой.
P.S. -> вот тут <- вроде как Ваш пример.
Обвешайте в форме кода это всё if'ами (проверками на условия) типа если [type] === image/jpeg, то по кнопке button происходит мув_аплоадед_файл(), else файл не является картинкой.
P.S. -> вот тут <- вроде как Ваш пример.
-
- Модератор
- Сообщения: 20998
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: обезопасить сервер при загрузке картинок
Эти данные передаются клиентом, на них нельзя полагаться.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 209
- ОС: Gentoo Xfce4
Re: обезопасить сервер при загрузке картинок
Вы между строк читаете?
Потрачу пять минут и попытаюсь объяснить доходчиво. Постарайтесь вникнуть:
$_FILES - это ассоциативный, суперглобальный массив, у которого есть тип (type) со значением format/info файла. Для примера возьмём утилиту mediainfo (уверен, что в Вашем дистрибутиве она присутствует). Возьмите любое изображение и посмотрите ранееупомянутой утилитой. Мой пример. Обратите внимание на расширение файла, на которое указывают целых 3 стрелочки. Далее мы заведомо меняем расширение файла на pdf и смотрим что покажет mediainfo. Именно про это я рассказал сообщением выше.
Я с Вами согласен, что грузить картинку в простой форме не комильфо. Для этого, в целях безопасности, "накладываются" всякие if, else, switch, case и т.п.
Мне кажется что -> тут <- можно увидеть исчерпывающее руководство и пример того, как проверять файл (картинку) и грузить её, если она проходит все проверки, на сайт.
Снова P.S> на момент зарождения моей учётной записи на этом форуме, я задал вопрос про PDO vs MySQLi, который Вы, мягко выражаясь, захейтили. Тем не менее я не стал прислушиваться к Вашему мнению, продолжив изучение PDO и на сегодняшний день у меня есть свои проекты, которые приносят (пока ещё небольшую) прибыль. Дальше больше...
-
- Сообщения: 1474
- ОС: Slackware
Re: обезопасить сервер при загрузке картинок
Я так понял, ваш вариант подразумевал проверку на стороне клиента, раз вы на формы их вешаете, а не на стороне сервера.
"Однажды один очень мудрый человек… ничего не сказал. Времена были опасные, да и собеседники ненадёжные"
-
- Модератор
- Сообщения: 20998
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: обезопасить сервер при загрузке картинок
Нет, я читаю то, что написано. А вот Вы почему-то написанное мной понять не удосужились.
Не имеет никакого значения, является ли $_FILES глобальным, суперглобальным или ультрамегаглобальным. Важно только то, можно ли доверять информации, которая в нём содержится. А поскольку она берётся непосредственно из POST-запроса, в котором злоумышленник может прислать что ему угодно, доверять ей нельзя.
Upd. Собственно, по приведённой Вами же ссылке написано:
$_FILES['userfile']['type']
Mime-тип файла, в случае, если браузер предоставил такую информацию. В качестве примера можно привести "image/gif". Этот mime-тип не проверяется на стороне PHP, так что не полагайтесь на его значение без проверки.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 209
- ОС: Gentoo Xfce4
Re: обезопасить сервер при загрузке картинок
Никому верить нельзя! Для этого есть проверки!
В Вашем же сообщение упоминается про проверки.
Добавлено (23:50):
Погодите. Помимо навешанных на форме проверок, на сервере (как я делаю) тоже есть проверки. Видимо я в начале это недосказал, но подразумевалось, что если человек такое спрашивает, то у него как минимум какая-нибудь CMS, в которой это реализовано, либо если это самопис и проект крупный или хотя бы средний, то тоже сделано. Не...? Комбинируем ту валидацию, что прилетает с формы на сервер и проверяем на сервере. Пример уже того, что прилетело с массива $_POST:
Shell
if ($_POST['картинка'] === формат/расширение или что там хотите)
грузим на сервер;
-
- Модератор
- Сообщения: 20998
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: обезопасить сервер при загрузке картинок
Ну вот и рассказали бы, как проще всего проверить тип файла по его содержимому в PHP.
Это не проверка, это слепая вера тому, что получено от клиента.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 209
- ОС: Gentoo Xfce4
Re: обезопасить сервер при загрузке картинок
Ни в коем случае...! Ибо "единственно возможный хороший код (не весь, но местами проскакивает) - это тот, который написал сам. Любой чужой код — говно и писали его сумасшедшие укурки...!" Не желаю быть в чьих-то глазах говнокодером. Вы сами считаете пиху "мёртвой". Какой смысл мне доказывать обратное, ссылаясь на 90% интернета на PHP...? Могу только указать на вышесказанные примеры, отправить на php.net где всё разжёвано, осталось как минимум скопипастить, а в идеале включить голову и реализовать красивое. Если в лом читать, велком ту ютуб с неплохим примером
Добавлено (01:53):
Так Вы проверьте то, что получаете от клиента.
Вы же когда в магазин приходите, расплачиваетесь наличкой, кассир проверяет достоинство купюры и если она больше, чем сумма выбранных Вами товаров, проводит операцию...=)
Йопа мать! Вы в очередной раз придираетесь ко мне...=)
-
- Модератор
- Сообщения: 20998
- Статус: nulla salus bello
- ОС: Debian GNU/Linux
Re: обезопасить сервер при загрузке картинок
Пожалуйста, не надо в этой теме доказывать ничего, что не имеет отношения к вопросу ТСа. Мне очень жаль, что Вас когда-то настолько задели мои слова, что Вы спустя много лет не в состоянии вести конструктивное обсуждение.
Нет, не к Вам. Я Вас вообще не знаю. Я придираюсь к содержанию Ваших сообщений, потому что к безопасности то, что в них написано, отношения не имеет.
Там очень много чего написано (включая редкостные глупости в комментариях), но ссылки именно на то, как обезопасить себя от загрузки исполняемого кода под видом картинок, Вы не привели. То есть чего-то вроде такого (не рекомендую ничего копипастить ни отсюда, ни откуда бы то ни было, просто пример для ознакомления).
P. S. Строго говоря, такие проверки тоже можно обойти, так что полагаться только на них нельзя. В первую очередь нужно, как я писал выше, обеспечить невозможность интерпретации любых загруженных файлов как кода.
Пишите правильно:
в консоли вку́пе (с чем-либо) в общем вообще | в течение (часа) новичок нюанс по умолчанию | приемлемо проблема пробовать трафик |
-
- Сообщения: 209
- ОС: Gentoo Xfce4
Re: обезопасить сервер при загрузке картинок
Исходя из Вашей логики, надо оборвать все интернеты, так как ни одна система не идеальна. Нужно закрыться дома и читать старые-добрые книжки в бумажном варианте, но я уверен, что с Вашей "душностью", Вы и там найдёте к чему придраться.
Прислушиваться к Вашему мнению, про глупости на крупных проектах, где люди делятся опытом - это всё не не то.
Опять же, почему тут rssbot, сливает новости с opennet 1 к 1...? Вдруг там дезинформация или в содержании встроен вредоносный код, который отработает на этом форуме? Где безопасность?
P.S.
3 года - это не много лет.
Обратите внимание на свой первый ответ. Достаточно ли он информативен ТС'у...?