Безопасный запуск php файла

376
06 января 2017, 12:24

Здравствуйте. Делаю что-то вроде сайта с редактором PHP кода. При нажатии на клавишу просмотра, у меня в специальной директории создаётся папка с уникальным id и в ней файл с самим php кодом (пример: /_projects/6dfh78d76dfg87/index.php). Дальше эта страничка открывается в iframe.

Так вот к проблеме: столкнулся с проблемой безопасности. С созданного файла можно редактировать любой файл сайта (.htaccess и другие файлы сайта). Я набросал пару вариантов ограничить доступ к файлам своего сайта:

  1. Защитить изменение и удаление важных файлов (но тут недостаток: можно редактировать файлы чужого "проекта")
  2. Запретить файлам с директории /_projects/{ID}/ обращаться к файлам, которые находятся вне папки {ID}
  3. Запретить некоторые функции в PHP
  4. Скрыть директории и файлы от функций таких, как scandir, dirname...
  5. Проверять PHP файл на наличие запрещённых функций

Но не знаю, как можно осуществить эти варианты. Подскажите, как можно их осуществить или кто-то знает вариант получше? Буду очень признателен. Заранее спасибо.

Answer 1

Самым надежным вариантом будет запуск кода внутри контейнера (например, Docker) с настроенным SECCOMP и selinux SELinux. При этом вы можете запускать любой код, а не только PHP.

Код может делать почти, что угодно и ограничить его можно как угодно.

Презентация о том как можно обезопасить Docker container Слайды и Видео

READ ALSO
Как отправить Post запрос через PHP в цыкле

Как отправить Post запрос через PHP в цыкле

Есть форма в нем select которая содержит ID пользователей

388
Вывод input со значениями tv modx revo

Вывод input со значениями tv modx revo

есть tv адрес(adress) со значением Независимости 15||Независимости 16

444
Задачи по php программированию [требует правки]

Задачи по php программированию [требует правки]

Здравствуйте, я новичок! Прошу помочь в решении задач по phpЗадачи на отработку циклов и функций PHP

540
Локализация БД в laravel [требует правки]

Локализация БД в laravel [требует правки]

Как можно правильно локализовать базу в laravel, если будет несколько языков и возможно, что в дальнейшем еще будет добавляться языки?

383