Если запретить выполнение 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(), он производительнее и менее ресурсоемкий, а в остальном сложно сказать что и где делать, не видя всего что там есть. Тыканье пальцем в небо не мой профиль )
rinaz22, судя по комментариям, у вас довольно странные представления о том, как вообще работает веб-сервер, и какой должна быть структура проекта. Этакий привет из 1998, или вроде того.
Stalker_RED, у меня нормальная структура и сайт работает через роутинг.
Просто например, есть шрифты, картинки. Эти форматы же нужно будет разрешить.
А на счет моих знаний о сервере, вы правы, я не очень хорошо про это знаю
Запретите создание файлов php. Для этого можно использовать возможности сервера, но лучше делать это на уровне кода и в дополнение использовать сервер.
rinaz22, вы можете запрещать доступ к файлам и папкам любого типа. Так же можно настроить доступ к любому файлу используя регулярные выражения. Однако эти настройки больше статические и они в основном выставляются для более серьезных прав доступа, которые критичны. А в проекте уже права могут быть на уровне кода с использованием БД
rinaz22, т.е. через PHP так? А если так, то получается через код вы контролируйте в каком виде и куда будут записываться файлы. Значит, можете убрать любой PHP код там.
rinaz22, а можно пояснить, каким образом? Там есть ftp? Если файлы создает движок, если он при сохранении убирает PHP код из файлов, то загрузить левый исполняемый код не получится.