@IvanIF

Почему права доступа 777 для папки на сервере это опасно?

У меня на сайте есть возможность загрузки пользователями файлов на сервер. Файлы загружаются в директории avatars и photos. Соответственно я выдал этим папкам права 777. Почему это опасно? Ведь при загрузке я проверяю файл на расширение и содержание. Кроме того в этих директориях лежат файлы .htaccess с вот таким содержанием (это запрещает исполнение скриптов из этой директории):
php_flag engine 0
RemoveHandler .phtml .php .php2 .php3 .php4 .php5 .php7 .phps .cgi .pl .asp .aspx .shtml .shtm .fcgi .fpl .htm .html
AddType text/plain .phtml .php .php2 .php3 .php4 .php5 .php6 .php7 .phps .cgi .pl .asp .aspx .shtml .shtm .fcgi .fpl .htm .html .jsp
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 5
CityCat4
@CityCat4 Куратор тега Информационная безопасность
Если я чешу в затылке - не беда!
По той же причине, по которой опасно девушке одной ночью летом в короткой юбке гулять по городу - могут совершить разные непотребства, даже не спросив имени :)
Ответ написан
@m0ze
The Gunner
Проверка проверке рознь - это раз. Два - можно попробовать загрузить файл .htaccess, перезаписав нынешний. Это я к тому, что уповать только на свой код и реализованную проверку, тем более с костылём вроде файла .htaccess, точно не стоит.

Да, но если установить права 755 например, то файлы перестают загружаться. Как тогда быть?

Поменяйте владельца директорий/файлов на юзера, под которым работает веб-сервер, тогда и права 755 начнут работать.

Соответственно я выдал этим папкам права 777. Почему это опасно?

Каждая из семёрок отвечает за права владельца (пользователя), группы и остальных. Права бывают на чтение (read - 4), запись (write - 2) и выполнение (execute - 1).

То есть, права 777 предоставляют все привилегии (чтение, запись, выполнение > 4 + 2 + 1 = 7) владельцу (7), группе (7) и остальным пользователям (7), что, очевидно, небезопасно.
Ответ написан
AleksandrB
@AleksandrB
Совсем недавно вывел "Hello world"
А теперь представь, что кто-то нашел уязвимость в твоем коде, который вызывает команду в консоле (exec() например) и теперь он может зайти в эту папку и удалить все что нужно.
Или у тебя взломали одного из юзеров.
По большому счету, права для папки - следующий уровень защиты, если первый не сработал.
Ответ написан
@mureevms
Опасно только потому, что если сломают сервер от любого пользователя, то он сможет изменять файлы во всех каталогах у которых права 777.
Ответ написан
@Karpion
Непонятно, являются ли пользователи системными (заведёнными в системе) или сайтовыми.
Если пользователи системные - то их надо включить в группу и дать доступ на запись в эти папки только этой группе (ну и возможно - владельцу).
Если пользователи сайтовые - то запросы на загрузку выполняются от имени какого-то юзера. Надо дать доступ только доступ на запись в эти папки только этому юзеру.

Есть такое хорошее правило:
"Никогда не давай прав больше, чем необходимо.".
Потому что дополнительные права не принесут пользы, ибо не нужны; а вот проблемы они принести могут запросто.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы