Здравствуйте. Делаю что-то вроде сайта с редактором PHP кода. При нажатии на клавишу просмотра, у меня в специальной директории создаётся папка с уникальным id и в ней файл с самим php кодом (пример: /_projects/6dfh78d76dfg87/index.php). Дальше эта страничка открывается в iframe
Так вот к проблеме: столкнулся с проблемой безопасности. С созданного файла можно редактировать любой файл сайта (.htaccess и другие файлы сайта). Я набросал пару вариантов, как можно ограничить доступ к файлам своего сайта:
Защитить изменение и удаление важных файлов (но тут недостаток: можно редактировать файлы чужого "проекта")
Запретить файлам с директории /_projects/{ID}/ обращаться к
файлам, которые находятся вне папки {ID}
Запретить некоторые функции в PHP
Скрыть директории и файлы от функций таких, как scandir,
dirname...
Проверять PHP файл на наличие запрещённых функций
Но не знаю, как можно осуществить эти варианты. Подскажите, как можно их осуществить или кто-то знает вариант получше? Буду очень признателен. Заранее спасибо.
Ответ
Самым надежным вариантом будет запуск кода внутри контейнера (например, Docker) с настроенным SECCOMP и selinux SELinux. При этом вы можете запускать любой код, а не только PHP.
Код может делать почти всё, что угодно и ограничить его можно как угодно.
Презентация о том как можно обезопасить Docker container: Слайды и Видео
Комментариев нет:
Отправить комментарий