Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Форумы портала PHP.SU :: Версия для печати :: Редактирование файлов через админку CMS - безопасность
Форумы портала PHP.SU » » Вопросы новичков » Редактирование файлов через админку CMS - безопасность

Страниц (2): [1] 2 »
 

1. dropoff - 03 Апреля, 2012 - 07:51:09 - перейти к сообщению
Доброго времени суток.

Сделал в одном скрипте редактирование некоторых файлов через админку. Так как в файлах некоторая инфа часто меняется, то так удобнее.

Но столкнулся с тем, что можно получить доступ к другому файлу.

Файлы сами в разных папках. какой файл править получаю из GET
т.е. edit=/folder1/file1.php
Но вот если прописать edit=../../conf.php, то и его читать можно.
Сейчас тупо вырезаю из получаемого GET .. (две точки), чтобы нельзя было лазить в другие каталоги. Но вроде как это не особо и правильно.

Как тут лучше поступить?
2. DelphinPRO - 03 Апреля, 2012 - 08:09:18 - перейти к сообщению
Запрос в url :
index.php?edit=conf

обработка например так
PHP:
скопировать код в буфер обмена
  1. isset($_GET['edit']) {
  2.         $editing = preg_replace('/[^a-zA-Z]/', '', strtolower($_GET['edit']));
  3.         if (empty($editing)) {
  4.                 die('Incorrect url');
  5.         }
  6.         $editing = '/folder/' . $editing . '.php';
  7. }

(Добавление)
dropoff пишет:
Но вроде как это не особо и правильно.

так то да. можно ведь и абсолютный путь ввести без точек
/home/dir/dir/important.file
3. dropoff - 03 Апреля, 2012 - 08:18:04 - перейти к сообщению
Вся штука в том, что там несколько папок и вложенных папок и файле не только php, но и html и css и js
по этому в get ставлю полный путь.
Т.е. файл может лежать не только /file.php, но и /folder/folder/file.php и /folder/file.php
(Добавление)
Как вариант заранее занести в массив весь список нужных файлов для изменения. Но файлы добавляются или удаляются.

Если тут получается сильно заковыристо, может тогда вообще отказаться от этого и править непосредственно через FTP?
4. DelphinPRO - 03 Апреля, 2012 - 08:33:08 - перейти к сообщению
сорри, невнимательно прочитал. Улыбка
5. avtor.fox - 03 Апреля, 2012 - 09:03:26 - перейти к сообщению
Данная система будет работать на "конечного" пользователя или для Вас? Ибо для себя мне гораздо удобней редактировать файлы по фтп, а для пользователей есть система редактирования страничек (не файлов). Или я Вас неправильно понял.

А ещё лучше привести пример структуры сайта и какие именно файлы нужно изменять. Улыбка
6. dropoff - 03 Апреля, 2012 - 09:12:48 - перейти к сообщению
Для конечного. Мне то не сложно и по ftp правочку сделать, а вот не шарящим удобнее из админки.

Конечной структуры нет. Папки и файлы добавляются и удаляются.
Есть отдельная папка files в ней уже и файлы и папки как попало лежат.
Т.е. как писал выше, некоторые могут быть в подпапках, некоторые в корне и т.д...
А вот корневая не меняется. Т.е. название как есть files, так и остается.
Я вот думаю может как-то на ней фиксировать файлы? Т.е. если файл не из этой папки, то не редактировать его вовсе, если из этой, то открывать.
7. avtor.fox - 03 Апреля, 2012 - 09:16:17 - перейти к сообщению
Какая информация содержится в этих файлах? В них текст, стили, html или вовсе контент для страничек сайта? Улыбка
8. dropoff - 03 Апреля, 2012 - 09:21:08 - перейти к сообщению
html, css - как положено html и css
php файлы со всякими мелкими функциями или константами.
Сейчас то все работает корректно, но вот возможность править другие файлы, не из папки files эт большая такая дырень получается Радость
9. EuGen - 03 Апреля, 2012 - 09:22:30 - перейти к сообщению
dropoff
Равно как и php-файлы из "правильной" папки, так как в этом случае создать там какой-либо веб-шелл не составляет труда.
10. avtor.fox - 03 Апреля, 2012 - 09:33:26 - перейти к сообщению
По моему не имеет смысла плясать с бубном и ваять редактирование html, css и тем более php через веб форму. Опасно, ненужно и непрактично.

Если конечный пользователь "собирается" редактировать файлы через веб морду, то он естественно должен знать язык разметки, стилей и пхп.
Я склонен к фтп. А Вы ещё раз подумайте над необходимостью реализации данной фичи.
11. snikers987 - 03 Апреля, 2012 - 09:33:39 - перейти к сообщению
Если php файлы не вызываются на прямую из этой папки, а к примеру подключаются, нужно отключить интерпретатор для этой папки.

По поводу вопроса:
PHP:
скопировать код в буфер обмена
  1.  
  2. $sContent = file_get_contents($_SERVER['DOCUMENT_ROOT'].'/users_dir/'.$_GET['path']);
  3.  
12. dropoff - 03 Апреля, 2012 - 09:35:40 - перейти к сообщению
EuGen, там ограничение доступа есть. Т.е. не каждый может править файлы из админки.
Но вот лазить по другим файлам, тем у кого да же доступ есть не желательно совсем.
Запускать файлы из этот папки не получится. php файлы инклудятся в других.
В смысле там
PHP:
скопировать код в буфер обмена
  1. <Files *.php>
  2. Order Deny,Allow
  3. Deny from all
  4. </Files>
13. avtor.fox - 03 Апреля, 2012 - 09:37:11 - перейти к сообщению
Ломаются любые сайты. Хм
14. DelphinPRO - 03 Апреля, 2012 - 09:43:48 - перейти к сообщению
dropoff пишет:
А вот корневая не меняется. Т.е. название как есть files, так и остается.
Если есть корневая папка, то можно канонизировать абсолютный путь к файлу
realpath($_GET['edit']) - это "развернет" все точки в реальные пути файловой системы,
и проверять наличие вначале полученного пути строки с $_SERVER['DOCUMENT_ROOT'].'/root_edit_folder/'
15. dropoff - 03 Апреля, 2012 - 10:02:56 - перейти к сообщению
DelphinPRO, спасибо!

avtor.fox, не спорю Радость

 

Powered by ExBB FM 1.0 RC1