Как защитить определенные папки с исходным кодом PHP от конкретных разработчиков?

У нас есть несколько умных разработчиков, которые работают над отдельными проприетарными проектами. Мы используем в основном PHP для проведения специального анализа и создаем множество веб-инструментов PHP, которые помогают нам визуализировать вещи изнутри.

Структура каталогов выглядит так:

  • /var/www/
    • / anton /
    • / Мэри /
    • / общие скрипты /

Антон не должен видеть сценарии Марии, и наоборот.

Я могу представить себе изменение разрешений для папки Linux, чтобы Антон мог только читать / писать / выполнять свою папку, и даже не читать папку Мэри.

Однако в таком случае, что помешает Антону:

  • написать PHP-скрипт в своей собственной папке, который запускает команду «exec», чтобы «перехватить» исходный код из папки Мэри?
  • запустить сценарий как www-data, который является пользователем Apache по умолчанию и, следовательно, имеет доступ ко всем папкам, включая папку Мэри?

Как правило, если вы хотите запустить несколько проприетарных проектов на одном сервере, как вы это сделаете?

(Обратите внимание, что меня не интересует обфускация / шифрование кода. Средства правовой защиты - это тоже вариант, который у нас уже есть. Я был бы очень заинтересован в решениях, выходящих за рамки юридической сферы.)


person user3495297    schedule 03.04.2014    source источник
comment
Почему тогда они находятся в / var / www? Антон мог войти на localhost / mary и просмотреть все скрипты там.   -  person built1n    schedule 03.04.2014
comment
Я видел, как этот вопрос задавался в разных формах в Stack Overflow (например, этот вопрос), и в целом ответ таков: нужно нанимать надежных разработчиков, а затем доверять им. Технически вы могли бы просто запустить несколько серверов (что дает лучший уровень безопасности), но я подозреваю, что процессы, которые говорят вашим разработчикам, что вы им не доверяете, могут не помочь в построении долгосрочных отношений, к которым вы должны стремиться.   -  person halfer    schedule 03.04.2014
comment
В моей работе мы не беспокоимся о разрешениях, но у нас есть отдельный код (больше о контроле версий). Что мы делаем, и это, вероятно, сработает для вас, - это настраиваем виртуальный хостинг и предоставляем каждому свой поддомен. Затем установите субдомены так, чтобы их корни документов указывали на разные папки, и включите open_basedir. Затем установите разрешения Linux, чтобы предотвратить доступ к папкам друг друга. PHP не сможет видеть за пределами корня документа, и они не могут использовать Linux для доступа к каждому из них.   -  person Jonathan Kuhn    schedule 03.04.2014


Ответы (2)


Затем создайте сценарий для каждого разработчика: каждый сценарий, защищенный собственной системой входа в систему, перечислит все файлы в папке разработчика и позволит редактировать их с помощью формы, которая изменит (с помощью str_replace) относительные пути, выходящие из папки разработчика. папка

person Community    schedule 03.04.2014

Быстрый поиск пользователя конфигурации apache для каждого виртуального хоста

http://itsol.biz/apache-virtual-hosts-with-different-users-centos-6-2-and-apache-2-2/

В принципе, я бы рекомендовал сделать папку каждого пользователя собственным виртуальным хостом, а затем использовать отдельных пользователей для каждого виртуального хоста. Таким образом, безопасность каталогов linux будет эффективна даже для сценариев PHP.

person Chris    schedule 03.04.2014