Если запретить выполнение php в определенном каталоге, это будет безопасно?
Всем привет. Делаю что-то на подобии конструктора сайтов. У пользователей в админке есть возможность создавать файлы и редактировать код. Если есть такая возможность, то можно и будет создать там вредоносный код или еще какую-нибудь пакость. Все проекты хранятся в одном каталоге(projects/user_project/...). user_projects - это папка определенного пользователя(т.е. у каждого своя такая папка). Если я через htaccess запрещу выполнение php, то это будет безопасно? + нельзя запретить выполнение html, т.к. сайты будут в html.
Если да, то что еще нужно запретить, кроме php?
Задача о семиугольном треугольнике.
Или у ваших пользователей есть возможность создавать и запускать РНР-скрипты, или зачем вообще обрабатывать файлы из пользовательского каталога интерпретатором РНР?
Вообще, вопрос предполагает кучу всякого по умолчанию, хотя оно совершенно не обязательно. Что у вас Апач и только Апач, например.
Ваша CMS с конструктором лежит в пользовательских папках? Вообще-то она должна существовать решительно отдельно. В том-то и цимес, что исполнение РНР должно производиться только там, где предполагается код РНР. А не в каждой папке, вываленной в публичный доступ - картинки там всякие, например, должны отдаваться без обработки, вне зависимости, что туда запихнули под видом картинок.
Вообще, в современных системах предполагается роутинг, который любые запросы, которые должен выполнять РНР, передает в единый скрипт, решающий, что с этим запросом делать дальше, а не исполняющий скрипты там, где им оказалось быть.
Adamos, да нет же. Файлы моего сайта лежат в корне, а файлы пользователей в каталоге. Я и так использую роутинг. Я хочу запретить php только для каталога, где лежат проекты пользователей. С этим и вопрос, будет ли это безопасно?
rinaz22, ответ - если запретить выполнение РНР и убедиться, что вы исключили выполнение РНР из папок пользователей, то у вас, возможно, не будет выполняться РНР из папок пользователей.
Можно, например, запретить выполнение из папки пользователя, но прописать в своем коде
<?php include('path/to/user/file.html'); ?>
и всей наведенной безопасности придет... в негодность.
Можно, например, запретить выполнение из папки пользователя, но прописать в своем коде
<?php include('path/to/user/file.html'); ?>
и всей наведенной безопасности придет... в негодность.
rinaz22, по тому что в папке пользователя нельзя исполнять скрипты, но читать из нее можно, а выполнять то что прочитал будет уже другой скрипт, тот который содержит строку <?php include('path/to/user/file.html'); ?>, а ему все можно.
rinaz22, для таких вещей больше подходит readfile(), он производительнее и менее ресурсоемкий, а в остальном сложно сказать что и где делать, не видя всего что там есть. Тыканье пальцем в небо не мой профиль )