|
При проектировании модуля «Включаемый код» особенное внимание было уделено безопасности.
Описание проблемы
Принцип работы модуля прост. В конце работы страницы происходит замена специальных комментариев на содержимое включаемых файлов.
Необходимо было сделать так, чтобы пользователь сайта не мог написать подобный комментарий и выполнить код с произвольными параметрами.
Меры безопасности
1. Замена комментариев происходит только в публичной части сайта. На страницах в папке /bitrix/ не работает.
В версии 1.1.0 сделано исключение для двух папок: теперь в папках /bitrix/templates/ и /bitrix/components/ можно создавать странички, в которых будет подставляться включаемый код. Сделано так, потому что некоторые пользователи использовали ajax и файлы складывали в папки шаблонов.
2. Нельзя подключать произвольный файл "/путь/имя файла". Включаемый файл можно создавать только в определенной папке.
3. Вместо текста для подстановки вида #COMMENT# используется комментарий вида <!--askaron.include ... -->. Комментарии со спецсимволами < и > более надежны, пользователь не имеет возможности эти символы писать. При выводе страницы происходит замена < и >.
Замечание:
Стандартные компоненты заменяют спецсимволы при выводе любого текста (например, имя пользователя). Но неопытный разработчик сайта может такую уязвимость допустить, и кто-то сможет написать HTML-код.
4. Комментарий вида <!--askaron.include ... --> имеет еще одну очень важную особенность. Его не индексирует встроенный модуль поиска Битрикса. Было бы очень нехорошо, если на странице поиска выводились бы комментарии для включаемого кода.
5. При ошибках в разработке нет 100% гарантии что пользователь не сможет написать комментарий <!--askaron.include ... -->, поэтому было принято решение в целях безопасности вообще отказаться от предустановленных включаемых файлов.
Комментарий в простейшем случае выглядит так:
<--askaron.include
имя файла
-->
Разработчик каждого конкретного сайта сам создает включаемый файл и сам придумывает для него имя. Это дает 100% гарантию, что никто не может выполнить включаемый код в неположенном месте.
6. Вместо предустановленных включаемых файлов есть примеры включаемых файлов.
При создании включаемого файла на основе примера генерируется случайное имя.
Имя файла date__ff8jhttu.php получается не очень красивым, но абсолютно безопасным.
В тексте включаемого файла автоматически заменяется текст для комментария.
<!--askaron.include
date__ff8jhttu.php
-->
Остается его скопировать и использовать на сайте.
Классы и функции |
Описание курса
| Включаемый код и композит
|