При проектировании модуля «Включаемый код» особенное внимание было уделено безопасности.


Описание проблемы

Принцип работы модуля прост. В конце работы страницы происходит замена специальных комментариев на содержимое включаемых файлов.

Необходимо было сделать так, чтобы пользователь сайта не мог написать подобный комментарий и выполнить код с произвольными параметрами.


Меры безопасности

1. Замена комментариев происходит только в публичной части сайта. На страницах в папке /bitrix/ не работает.

В версии 1.1.0 сделано исключение для двух папок: теперь в папках /bitrix/templates/ и /bitrix/components/ можно создавать странички, в которых будет подставляться включаемый код. Сделано так, потому что некоторые пользователи использовали ajax и файлы складывали в папки шаблонов.

2. Нельзя подключать произвольный файл "/путь/имя файла". Включаемый файл можно создавать только в определенной папке.

3. Вместо текста для подстановки вида #COMMENT# используется комментарий вида <!--askaron.include ... -->. Комментарии со спецсимволами < и > более надежны, пользователь не имеет возможности эти символы писать. При выводе страницы происходит замена &lt; и &gt;.

Замечание:
Стандартные компоненты заменяют спецсимволы при выводе любого текста (например, имя пользователя). Но неопытный разработчик сайта может такую уязвимость допустить, и кто-то сможет написать HTML-код.

4. Комментарий вида <!--askaron.include ... --> имеет еще одну очень важную особенность. Его не индексирует встроенный модуль поиска Битрикса. Было бы очень нехорошо, если на странице поиска выводились бы комментарии для включаемого кода.

5. При ошибках в разработке нет 100% гарантии что пользователь не сможет написать комментарий <!--askaron.include ... -->, поэтому было принято решение в целях безопасности вообще отказаться от предустановленных включаемых файлов.

Комментарий в простейшем случае выглядит так:
<--askaron.include
имя файла
-->

Разработчик каждого конкретного сайта сам создает включаемый файл и сам придумывает для него имя. Это дает 100% гарантию, что никто не может выполнить включаемый код в неположенном месте.

6. Вместо предустановленных включаемых файлов есть примеры включаемых файлов.

Дата - создать включаемый файл

При создании включаемого файла на основе примера генерируется случайное имя.

Дата - включаемый файл

Имя файла date__ff8jhttu.php получается не очень красивым, но абсолютно безопасным.

Дата - включаемый файл - код.png

В тексте включаемого файла автоматически заменяется текст для комментария.

<!--askaron.include
date__ff8jhttu.php
-->


Остается его скопировать и использовать на сайте.

0  


 Классы и функции | Описание курса | Включаемый код и композит