В общих чертах: это back-end приложение для разработчиков, управлять которым более, чем легко. Система фильтрует все приходящие данные по различным направлениям, умеет защищать формы, и, на данный момент, это всё, что оно может.
Запланировано: защита файлов, пользовательский реестр (с защитой), анализатор файлов, компонент поиска внедренных зловредных скриптов (и в файловой системе, и по БД), автоматическое обновление, увеличение количества поддерживаемых фильтров, по пожеланиям разработчиков:)
Текущее состояние: выпущена первая Альфа.
Использование:
Здесь и начинается магия. Использование фильтров сводится к тому, чтобы использовать обычные глобальные переменные, добавляя к запросу всего пару символов:
print $_GET["ключ#ИД фильтра / код фильтра"];
print $_POST["ключ#ИД фильтра / код фильтра"];
И для GET, и для POST фильтры одинаковы, что упрощает их использование.
Если Вы не найдёте нужный вам фильтр, можно скомбинировать фильтры и создать выражние:
print $_GET["ключ#1,10"];
Выражения: конструкция exp[ ], в конструкции - набор символов, которые разрешены к употреблению через символ "|": (английский алфавит - en, цифры - num, русский алфавит - ru)
print $_GET["ключ#exp[en|num|%|$|&|@]"];
Сама система представляет собой класс, который при создании экземпляра автоматически подгружает остальные:
include_once("securelab/securelab-main.php");
$SL = new SecureLab();
В системе реализованы следущие возможности:
- Фильтрация
- Защита форм
- Компоненты разработчика (Developer Tools)
- Адд-оны с системой управления и API.
Сам класс можно использовать как функцию (требуется всего лишь разрешить это в настройках, по-умолчанию включено):
$SL("код операции");
Поддерживаемые коды:
newformkey: возвращает HTML-код со скрытым ключом для защиты формы;
validateform: проверяет входящие данные, связанные с защитой формы;
printerrors: выводит все ошибки, произошедшие в процессе работы.
Так же можно использоват этот же метод для вызова аддонов: вместо кода операции нужно указать полное имя аддона (регистр важен).
В случае, если параметр, отвечающий за возможность использования этой опции имеет значение 0, можно обращаться к компонентам напрямую:
$SL->DeveloperTools->TestSystem(); // проверка компонетов на доступность
$SL->DumpAPI->CreateDumpEvent(); // регистрирование новой ошибки
$SL->FormsProtection->NewProtectionKeys(); // генерирование ключа защиты
$SL->FormsProtection->ValidateProtection(); // проверка ключей зщиты формы
$SL->FiltersAPI->ApplyFilter(); // прямое применение фильтра
Буду рад конструктивной критике, предложениям и вопросам. Проект распространяется по лицензии CC-BY-NC v. 2.0, в текущем состоянии Alpha, располагается на серверах SourceForge: sourceforge.net/projects/securelab
В ближайшее время по ссылке Documentation (RU) на русском языке в формате .docx, в дальнейшем будет опубликовано как HTML.
Загрузить первую альфу можно по ссылкам:
Оф. сайт или по приложенному к сообщению файлу:
Спустя 50 минут, 51 секунда (10.03.2012 - 13:19) johniek_comp написал(а):
смысл этого в том что бы провалидировать форму?
Спустя 2 минуты, 13 секунд (10.03.2012 - 13:22) Invis1ble написал(а):
Я что-то тоже не понял, в чем прикол. Регулярки и штатные функции языка уже нынче не в моде?
Спустя 5 минут, 23 секунды (10.03.2012 - 13:27) ABlack написал(а):
Это пока лишь небольшая основа, реализовано около 20% того, что я планировал) А фишка (на данный момент) в удобстве и ненужности самому составлять выражения, и использовании в одну строку.
Спустя 9 минут, 15 секунд (10.03.2012 - 13:36) johniek_comp написал(а):
ABlack
ИМХО, один класс, а там методы для разного вида валидности 5-7 всего, и вызывай их, это самому не сложно написать за 1 час, а тут столько кода у Вас
ИМХО, один класс, а там методы для разного вида валидности 5-7 всего, и вызывай их, это самому не сложно написать за 1 час, а тут столько кода у Вас

Спустя 5 минут, 29 секунд (10.03.2012 - 13:42) ABlack написал(а):
johniek_comp,
Ну...) Это как бы база для будущих изменений, коих планируется немало: я планирую превратить SL в некоего монстра защиты PHP скриптов, возможно даже с базой функционала анивируса, но это так, в мечтах)
Ну...) Это как бы база для будущих изменений, коих планируется немало: я планирую превратить SL в некоего монстра защиты PHP скриптов, возможно даже с базой функционала анивируса, но это так, в мечтах)
Спустя 5 минут, 35 секунд (10.03.2012 - 13:47) Nikitian написал(а):
Подобные штуки, имхо, должны встраиваться в проект прозрачно. Т.е. если её убрать, то ничего поломаться не должно, а в данном случае поломается всё
Думаю, было бы лучше если бы шёл отдельный параметр со всеми правилами для переменных.

Спустя 5 минут, 48 секунд (10.03.2012 - 13:53) johniek_comp написал(а):
ABlack
На Хабре уже выкладывал ?
На Хабре уже выкладывал ?

Спустя 4 минуты, 53 секунды (10.03.2012 - 13:58) ABlack написал(а):
Nikitian
Ничего, по сути, не ломается)
Через минут 20 будет готово обновление, в конфигурации которого можно будет выбрать действие по умолчанию при поступлении данных без указания на применение фильтра (сейчас это применение фильтра #1), а еще можно использовать #nofilter для того, чтобы фильтр не применялся), плюс, чисто из-за принципа работы этоо метода, делается невозможным проверять $_POST на наличие внутри него данных методами empty() или сравнивания с нулём, но это частично компенсированно методом $_POST(), который возвращает true в случае, если есть есть данные типа POST и соответственно false если нет) с $_GET то же самое.
johniek_comp,
Неплохая шутка.)
Ничего, по сути, не ломается)
Через минут 20 будет готово обновление, в конфигурации которого можно будет выбрать действие по умолчанию при поступлении данных без указания на применение фильтра (сейчас это применение фильтра #1), а еще можно использовать #nofilter для того, чтобы фильтр не применялся), плюс, чисто из-за принципа работы этоо метода, делается невозможным проверять $_POST на наличие внутри него данных методами empty() или сравнивания с нулём, но это частично компенсированно методом $_POST(), который возвращает true в случае, если есть есть данные типа POST и соответственно false если нет) с $_GET то же самое.
johniek_comp,
Неплохая шутка.)