SKY / WINGS / SECURITY /
START1

Константа START имеет в SKY Framework три назначения:

1. Все файлы-"точки входа" начинаются с определения константы START, к примеру, таким образом:

001
002
<?php define('START''cron');
 

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

2. Включаемые скрипты административной части приложений, и включаемые части центрального тела фронтальных страниц в папке view, всегда начинаются с такого кода:

001
002
<?php eval($me) or die;
 

Это позволяет получить прототип имени включаемого файла в переменной $me (ее значение перезаписывается). Что может оказаться удобно в отладочных целях (в трассировке можно наблюдать факт включения конкретного файла), в файлах админ. части в SQL запросах, например так: sql("select * from $me"); При переименовании таких файлов, в случае, когда прототип имени файла соответствует имени таблицы с которой он работает, скрипт не требуется корректировать. Такие файлы однозначно трактуются как включаемые и если произвести запуск такого файла без включения из другого файла или когда начальное значение переменной $me не определено, сработает инструкция die. Такая схема предотвращает любую возможность попыток взлома кода, когда злоумышленник пытается запустить файл, который предназначен быть включенным, как файл точки входа.

3. Файлы PHP, в которых только лишь имеются определения функций и классов, но нет запускаемого (именно в этом файле) кода, начинаются так:

001
002
<?php #
 

Так как отсутствуют любые запуски на выполнение, использование такого включаемого файла, как файла точки входа будет всегда безопасно, и наличие кода "крышевания" как в пункте ниже, не требуется, и не желательно с точки зрения быстродействия работы парсера PHP. Но наличие пустого комментария будет указывать, что файл принадлежит к коду SKY Framework и в нем нет активных запусков. Множество существующих в данный момент файлов-классов из разных источников, и написанные разными программистами, могут быть портированы в SKY, если код файла соответствует стандартам кодирования и принципам построения кода. Как правило такие файлы имеют только определения классов, не имеют "активных запусков", относятся к коду третьего крыла, при портировании приводятся к нужному виду, им присваивается путь main/class/*.php.

4. Все остальные файлы PHP должны начинаться кодом:

001
002
<?php defined('START') or die;
 

Код работает и имеет назначение подобное как в пункте 2, за исключением того что не определяет никаких переменных и констант.

Файл крон запуска main/c_timezone.php, например, может иметь точку входа, а файл main/c_maintask.php быть включаемым из main/cron.php. Программист, который не знаком с кодом приложения, увидев начало скрипта этих файлов, может сразу однозначно понять включаемый это файл или нет.

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

Важность явления: высокая
опубликовано ENERGY - 10 Oct 2015 11:42 GMT
последнее редактирование - 15 Oct 2015 16:07 GMT
комментировать