Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> шаблоны на PHP, вопрос безопасности 
:(
    Опции темы
S.A.P.
Дата 6.8.2005, 00:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 3
Всего: 71



Пишу, значит систему... решил обойтись без шаблонизаторов, шаблоны делать на чистом PHP. И тут встала такая проблема: необходимо осуществлять подстановку некоторых шаблонов (в том числе и сгененрированных программно, в виде строки) в один общий. Проблему вроде как решил путем вставки строки в HTML шаблон <? eval($content) ?>, где в качестве $content будет подставляться скриптом все, что душе угодно, например 'include("main")';

Тут встал вопрос безопасности. Предположим, что исходники доступны всем и каждый кулхацкер знает, что шаблоны будут находиться в папке templates. smile . Поскольку данные шаблоны являются полноценными PHP программами, которые, кстати, непосредственно выдаются в браузер скриптом, предварительно получив необходимые данные из базы, существует вероятность вызова этих шаблонов клиентом, помимо скрипта.

Вопросы:
1. Есть ли опасность подстановки несанкционированного кода клиентом, скажем в ту же переменную $content, обращаясь к шаблону напрямую.
2. Как это можно предотвратить, поможет ли манипуляции с правами доступа на сервере.
3. Что я вобще делаю не так, и как правильно. Поглядывал на XSLT и SMARTY, не понравилось: первый в плане навороченности (с точки зрения дизайнеров), второй еще и по причине тормознутости.

PM MAIL   Вверх
Mal Hack
Дата 6.8.2005, 00:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



А чем тебя не устраивает вариант шаблонизатора как в этом форуме?
ИМХО, это наиболее лучший вариант без всяких замутов Смарти и лишней нагрузки на сервер.
PM ICQ   Вверх
S.A.P.
Дата 6.8.2005, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 3
Всего: 71



Если я не ошибаюсь, тут пассивные шаблоны. Чем они меня не устраивают:
1. Ребята из Invision и лучше выдумать не смогли, чем хранить шаблоны в базе (зачем в базе, понять не могу), но это решается.
2. Я не нашел способа создавать вложенные пассивные шаблоны, к примеру подключать к шаблону несколько других, из разных файлов, думаю поэтому форма ответа на форуме своя для полноценного ответа в тему, своя для быстрого ответа, своя для ответов в PM. Хоцца форму ответа держать в одном файле и подключать его к шаблонам в которых требуется (я не форум пишу smile ) .
3. Пассивные шаблоны менее гибкие, чем актиные.
PM MAIL   Вверх
Mal Hack
Дата 6.8.2005, 00:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Стоп. Шаблоны в БД это только в 2 и то вроде кэша, а так - в файлах.

Цитата(Perchilla @ 6.8.2005, 01:36)
Я не нашел способа создавать вложенные пассивные шаблоны, к примеру подключать к шаблону несколько других

А тебе оно надо? Это ведь сильно тормозит скрипт.

PM ICQ   Вверх
S.A.P.
Дата 6.8.2005, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 3
Всего: 71



Цитата(Mal @ 6.8.2005, 00:43)
Стоп. Шаблоны в БД это только в 2 и то вроде кэша, а так - в файлах.
я про 1.3 , 2.0 не смотрел. В 1.3 есть привда skin, но это чистой воды PHP, а там еще именно пассивные шаблоны были в базе. Но это к делу не относиться smile .

Цитата(Mal @ 6.8.2005, 00:43)
А тебе оно надо? Это ведь сильно тормозит скрипт.
я вот тоже думаю, надо или нет... Так или иначе любой шаблоонизатор, написанный на PHP будет еще тормознее самого PHP. smile .
PM MAIL   Вверх
Mal Hack
Дата 6.8.2005, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Цитата(Perchilla @ 6.8.2005, 01:57)
В 1.3 есть привда skin, но это чистой воды PHP,

А что в этом плохово? Наоборот. Просто передавай нужные переменные и все.
PM ICQ   Вверх
Irokez
Дата 6.8.2005, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(Perchilla @ 6.8.2005, 00:21)
1. Есть ли опасность подстановки несанкционированного кода клиентом, скажем в ту же переменную $content, обращаясь к шаблону напрямую.

ну конечно есть, особенно если например сделать редактирование шаблонов через админку, или если есть возможность в админке загрузить свой шаблон или заменить другой шаблон...

Цитата(Perchilla @ 6.8.2005, 00:21)
2. Как это можно предотвратить, поможет ли манипуляции с правами доступа на сервере.

думаю поставить права на редактирование только для админа сервака

Цитата(Perchilla @ 6.8.2005, 00:21)
3. Что я вобще делаю не так, и как правильно. Поглядывал на XSLT и SMARTY, не понравилось: первый в плане навороченности (с точки зрения дизайнеров), второй еще и по причине тормознутости.

прошу прощения если вдруг не по теме.. но вроде эта статья хорошо к теме подходит

Это сообщение отредактировал(а) Irokez - 6.8.2005, 01:07
PM   Вверх
S.A.P.
Дата 6.8.2005, 01:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 3
Всего: 71



Цитата(Irokez @ 6.8.2005, 01:06)
прошу прощения если вдруг не по теме.. но вроде эта статья хорошо к теме подходит

спасибо, почитаю, правда мне кажется фактически копия главы "Код и шаблон страницы" того же самого аффтара из книги php 5, которую я зачитал до дыр smile .
Что мне именно не нравиться и той главы:
Автор вроде правильно подходит к вопросу, говорит об актуальности отделения кода от дизайна, начинает от лобового вкрапления HTML кода в PHP программу, затем наоборот PHP кода в HTML, рассказывет о пассивных шаблонах, компонентном подхоже, путем небольших вставок на PHP и наконц выносит вердикт: лучший способ - компонентный подход + активные шаблоны не на PHP, это типа SMARTY и т.д. А если посмотреть издалека, то мы приходим туда, откуда начали, с большим, тяжелым, навороченным языком шаблонов на руках и полной неразберихой среди дизайнеров smile .

Цитата(Mal @ 6.8.2005, 01:03)
А что в этом плохово? Наоборот. Просто передавай нужные переменные и все.
в принципе я это сейчас и делаю ( в смысле на чистом PHP ), просто вопрос немного в другое русло перешел ( с безопасностью вроде разобрались ).

Представим себе такую задачу: нужно сделать сайт, у него будет: шапка, меню, подвал и содержимое. Шапка, меню и подвал остаются неизменными, в шаблонах. Содержимое будет разное, в зависимости от запроса, к примру юзер запросил статью, дергается шаблон статьи из файла и комбинируется с основным шаблоном (с шапкой, меню и.т.д), тоже самое для новостей, каталогов и т.д. ПРичем некоторые шаблоны должны использоваться повторно, к примеру та же форма ответа будет юзаться и для гостевой книги и для комментариев к статьям. Кто подобными вещами занимался? Стоит ли писать шаблонизатор (и какой) или легче PHP обойтись?
Добавлено @ 01:57
Цитата(Irokez @ 6.8.2005, 01:06)
ну конечно есть, особенно если например сделать редактирование шаблонов через админку, или если есть возможность в админке загрузить свой шаблон или заменить другой шаблон...


Цитата(Irokez @ 6.8.2005, 01:06)
думаю поставить права на редактирование только для админа сервака
нет, я не это имел ввиду. Предположим есть у меня файл template.php и в нем такая строка:
<? eval($content) ?> может ли пользователь хитрыми запросами подделать переменную $content, влепив туда вредный код? . И как этого избежать.

Добавлено @ 02:00
вернее template.html, это вед шаблон будет, не предусмотренный для непостредственного запуска, т.е. $content должна быть определена, в скрипте, вызывающем этот шаблон.
PM MAIL   Вверх
Irokez
Дата 6.8.2005, 02:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(Perchilla @ 6.8.2005, 01:52)
<? eval($content) ?> может ли пользователь хитрыми запросами подделать переменную $content, влепив туда вредный код? . И как этого избежать.

смотря откуда будет браться $content, думаю что риск всегда будет
тут наверное следует не сразу использовать eval, а например myeval - а она уже будет делать хоть какие то проверки (например регами..) перед тем как передавать в eval

Цитата(Perchilla @ 6.8.2005, 01:52)
спасибо, почитаю, правда мне кажется фактически копия главы "Код и шаблон страницы" того же самого аффтара из книги php 5, которую я зачитал до дыр

я статью на работе читал и ухохатывался, прикольно пишет smile
PM   Вверх
S.A.P.
Дата 6.8.2005, 02:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 3
Всего: 71



Вобщем со статьей вроде тоже понятно smile . Я наврное скоро целый роман напишу, как я всю неделю писал интерпритатор языка php на php smile . Вроде хочется и понавороченней и логику от дизайна отделить smile .
PM MAIL   Вверх
Irokez
Дата 6.8.2005, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


индеец
***


Профиль
Группа: Участник Клуба
Сообщений: 1180
Регистрация: 20.10.2004

Репутация: 22
Всего: 53



Цитата(Perchilla @ 6.8.2005, 02:24)
Я наврное скоро целый роман напишу, как я всю неделю писал интерпритатор языка php на php

smile поэтому лучше сделать свой мини-язык.. зато безопаснее
PM   Вверх
Bikutoru
Дата 7.8.2005, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Увлекающийся
**


Профиль
Группа: Участник
Сообщений: 522
Регистрация: 24.5.2005
Где: Москва

Репутация: 8
Всего: 22



Цитата
Я наврное скоро целый роман напишу, как я всю неделю писал интерпритатор языка php на php


Perchilla,
Код

eval($php_code)

За полчаса управился smile

А можно такой вопрос - чем пассивные шаблоны от активных отличаются?

Это сообщение отредактировал(а) Bikutoru - 7.8.2005, 15:04


--------------------
Человек, словно в зеркале мир — многолик, 
Он ничтожен — и он же безмерно велик!
Омар Хайям
PM   Вверх
S.A.P.
Дата 7.8.2005, 19:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник Клуба
Сообщений: 2664
Регистрация: 11.6.2004

Репутация: 3
Всего: 71



Цитата(Bikutoru @ 7.8.2005, 15:02)
код PHP
1:

eval($php_code)

За полчаса управился smile
вот, вот smile . Зачем писать навороченный язык шаблонов, если есть PHP smile .

Цитата(Bikutoru @ 7.8.2005, 15:02)
А можно такой вопрос - чем пассивные шаблоны от активных отличаются?

насколько я понимаю, в пассивных шаблонах нету всяких циклов и ветвлений, вся логика сосредоточена в отдельных PHP программах.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0556 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.