|
|
|
| Пишу CMS, в которую можно будет устанавливать новые модули (форум и т.п.). И столкнулся с такой проблемой. Как сделать так, чтобы модули могли обращаться только к своим таблицам (не базам данных, база будет одна с одним пользователем) и только читать/писать определённые файлы/папки? Это нужно для того, чтобы сторонний модуль не слил/стёр информацию в других таблицах и файлах.
PS. Как я представляю решение. Есть ядро системы, представляющее собой несколько базовых функций - работа с файлами, бд, изображениями и возможность устанавливать модули. Прямой доступ к базе и файлам разрешён только этим базовым функциям. Все остальные запросы к базе/файлам выполняются только через них. В них же проверяются права того или иного модуля на чтение/запись конкретного файла или таблицы.
При установке модуля, создаются необходимые таблицы, и модулю назначается пароль для доступа к ним.
Вопрос, который меня интересует: как запретить прямой доступ к файлам и базе данных и сделать возможным его только через стандартные функции? | |
|
|
|
|
|
|
|
для: sasha1133
(10.09.2010 в 02:34)
| | Как сделать так, чтобы модули могли обращаться только к своим таблицам (не базам данных, база будет одна с одним пользователем
Одна база это понятно. Но почему с одним пользователем? | |
|
|
|
|
|
|
|
для: Trianon
(10.09.2010 в 08:54)
| | Просто у меня сомнения по поводу того, можно ли на хостинге создавать новых пользователей. Мне казалось, что хостер выдаёт только 1 логин + пароль к базе.
Но с базой более менее понятно – только системный модуль "знает" логин и пароль к базе, а остальные модули могут при установке 1) создавать свои новые таблицы; 2) получать свой уникальный номер для доступа к ним. При этом в специальной таблице создаётся список уникальных номеров и прав доступа для них, по которым системный модуль сверяется.
Проблема заключается в том, чтобы запретить сторонним модулям читать файлы, т.к. в таком случае не проблема, например, прочесть параметры подключения к БД и подключиться напрямую. | |
|
|
|
|
|
|
|
для: sasha1133
(10.09.2010 в 12:16)
| | а если модуль будет зависеть от корневых модулей?
Это вы уже накручиваете помоему:)
Если ктото другой будет писать модуль к вашей CMS его прежде всего нужно будет проверить, перед тем как раздавать комуто, а если юзер решит взять этот самый модуль гдето из левого источника, то это его проблемы. | |
|
|
|
|
|
|
|
для: sl1p
(10.09.2010 в 12:35)
| | собственно можно и не заморачиваться. я пишу cms не для распространения, а для того, чтобы на её основе делать на заказ сайты. просто интересно как реализовать такую защиту | |
|
|
|
|
|
|
|
для: sasha1133
(10.09.2010 в 12:16)
| | >>Проблема заключается в том, чтобы запретить сторонним модулям читать файлы, т.к. в таком случае не проблема, например, прочесть параметры подключения к БД и подключиться напрямую.
Как вариант, Вы можете хранить данные для подлючения к базе в зашифрованном виде в текстовом файле. Алгоритм шифрования можете реализовать свой или выбрать достаточно редкий. Вот пример. Шифрование, конечно, должно быть обратимым. Тогда Ваш центральный модуль, зная алгоритм шифрования, сможет расшифровать данные для подлючения к базе, а сторонние модули, даже если и прочтут файл, без алгоритма не смогут подлючиться к базе. | |
|
|
|
|
|
|
|
для: Ирбис
(11.09.2010 в 08:50)
| | Спасибо, возьму на заметку. Но как предотвратить, например, просто удаление системных файлов сторонним модулем?
PS. Может есть какая нибудь директива .htaccess для этого? Или php файлы не учитывают это при доступе к файлам? | |
|
|
|
|
|
|
|
для: sasha1133
(11.09.2010 в 13:26)
| | >>Но как предотвратить, например, просто удаление системных файлов сторонним модулем?
Не знаю.
>>Может есть какая нибудь директива .htaccess для этого?
.htaccess тут ничем помочь не сможет. Он содержит инструкции, которые обрабатываются web-сервером при обращении к файлу. Т.е. он играет свою роль только тогда, когда запрос к файлу осуществляется со стороны web-сервера, например, Вы через браузер обращаетесь к скрипту. Из самого скрипта обращение к файлу происходит не со стороны web-сервера, а со стороны файловой системы, которая никаких инструкций из .htaccess считывать не будет. | |
|
|
|
|
|
|
|
для: Ирбис
(11.09.2010 в 15:40)
| | Спасибо за полезную информацию. А возможно ли сделать так, чтобы модули можно было загрузить только с официального сайта через админку? | |
|
|
|