Безопасные привилегии chmod? - PullRequest
       7

Безопасные привилегии chmod?

5 голосов
/ 05 августа 2010

Стандартными привилегиями chmod являются «644» для файлов и «755» для каталогов, не так ли?

В большинстве случаев PHP не нужно записывать в файлы или каталоги. Так я не могу получить права на запись от всех групп?

Я мог бы назначить "444" для всех файлов и "555" для всех каталогов.

Разве это не было бы более безопасно?

Заранее спасибо!

Примечание: chmod() находится в моем списке disable_functions моего PHP.

Ответы [ 4 ]

3 голосов
/ 26 августа 2010

Разрешения по умолчанию для вновь создаваемых файлов и каталогов задаются переменной среды umask . Владелец файла и root могут изменять права доступа.

Если вам не нужно использовать chmod в вашем приложении, оставьте его в своем списке отключений. Вы должны взглянуть на безопасность так: многие люди умнее меня теперь делают chmod одной из самых безопасных частей моего приложения. Поэтому я буду тратить свое свободное время на то, чтобы обеспечить безопасность других частей.

Если вы автоматизируете приложение, сделайте приложение доступным только для чтения на сервере. Когда вы вносите изменения в код своего приложения, это все же усложнит вам задачу. В какой-то момент вы вернетесь назад и вперёд, сделав некоторые изменения кода и протестировав их на сервере ... а затем забудете сбросить права доступа к файлу / каталогу обратно только для чтения.

Если у вас есть только одна учетная запись пользователя на вашем рабочем компьютере, я просто придерживаюсь разрешений по умолчанию - все, вероятно, управляется для вас. Или вы можете удалить групповые и «другие» разрешения, как описано ниже.

Типичная производственная настройка - иметь группу приложений, к которой вы принадлежите. Вам также нужен отдельный пользователь для запуска вашего php-приложения. Сохраните полные разрешения для владельца и группы и удалите все разрешения из «другого». Таким образом:

  • Разработчики ведут свои индивидуальные логины - вы можете отслеживать, кто что сделал, когда.
  • Вы и другие разработчики можете скопировать новый код на сервер.
  • Приложение может запустить код.
  • Приложение не может получить доступ к чему-либо вне кода.
  • Другие пользователи не видят ваш код.

Полагаю, управлять вашим рабочим сервером - это чужая работа? Они потратят время, чтобы убедиться, что никто не может войти в систему и ковыряться. Хотя вам нужно убедиться, что никто не может выполнять команды операционной системы, я думаю, что лучшее место для начала - это узнать о xss . Настройки php сервера по умолчанию должны быть в порядке. Наименее защищенная часть приложения - это та часть, которую вы только что видели. Если кто-то собирается получить доступ к системному вызову, он, скорее всего, будет через форму. Даже если вы исключите системные вызовы, формы по-прежнему подвержены хранению javascript. Если вы не храните кредитные карты в своем приложении, более вероятной целью будет пароль / сеанс в браузере вашего пользователя.

1 голос
/ 01 сентября 2010

Извините за мой английский.

Я думаю по трем возможным причинам.

  1. Установите флажок safe_mod в вашем php.ini, если safe_mod равно ON у вас могут возникнуть проблемы с этой функцией.
  2. Если у вас есть plesk, у вас будут проблемы, если вы создадите папки или файлы с другим пользователем, который не был создан с помощью plesk.
  3. Скорее всего, вам не хватает библиотеки php.
1 голос
/ 05 августа 2010

Это не более безопасно, поскольку PHP всегда может выполнить chmod 777 даже для 000-chmoded файлов (если они принадлежат PHP)Тем не менее, это безопаснее, так как вы не можете написать этот файл без предварительной модификации.

0 голосов
/ 26 августа 2010

chmod() есть в моем списке PHP100 * 1003.
Разве это не было бы более безопасно?

Возможно использование disable_functionsотключить определенные функции.
Если в директиве disable_functions появляется chmod(), использовать его небезопасно;он просто отключен, и код PHP, использующий chmod(), вызовет предупреждение.

Директиву disable_functions не следует путать с директивами Safe Mode .disable_functions активен, даже если директива safe_mode установлена ​​в 0;когда safe_mode включен, некоторые функции отключены или ограничены.

Чтобы заметить, что безопасный режим считается устаревшим, в PHP 5.3;это означает, что директива все еще принята в PHP 5.3, но ее нельзя больше использовать в любое время.

...