SecureLab

ABlack

Новичок
Добрый день, представляю Вашему вниманию небольшой проект с большими планами на будущее: SecureLab.

В общих чертах: это back-end приложение для разработчиков, управлять которым более, чем легко. Система фильтрует все приходящие данные по различным направлениям, умеет защищать формы, и, на данный момент, это всё, что оно может.

Запланировано: защита файлов, пользовательский реестр (с защитой), анализатор файлов, компонент поиска внедренных зловредных скриптов (и в файловой системе, и по БД), автоматическое обновление, увеличение количества поддерживаемых фильтров, по пожеланиям разработчиков:)

Текущее состояние: выпущена первая Альфа.

Использование:
Здесь и начинается магия. Использование фильтров сводится к тому, чтобы использовать обычные глобальные переменные, добавляя к запросу всего пару символов:
PHP:
print $_GET["ключ#[b]ИД фильтра / код фильтра[/b]"];
print $_POST["ключ#[b]ИД фильтра / код фильтра[/b]"];
И для GET, и для POST фильтры одинаковы, что упрощает их использование.
Если Вы не найдёте нужный вам фильтр, можно скомбинировать фильтры и создать выражние:
PHP:
print $_GET["ключ#[b]1,10[/b]"];
Выражения: конструкция exp[ ], в конструкции - набор символов, которые разрешены к употреблению через символ "|": (английский алфавит - en, цифры - num, русский алфавит - ru)
PHP:
print $_GET["ключ#[b]exp[en|num|%|$|&|@][/b]"];
Сама система представляет собой класс, который при создании экземпляра автоматически подгружает остальные:
PHP:
include_once("securelab/securelab-main.php");
$SL = new SecureLab();
В системе реализованы следущие возможности:
  • Фильтрация
  • Защита форм
  • Компоненты разработчика (Developer Tools)
  • Адд-оны с системой управления и API.

А так же системные компоненты: конфигурация, система единой обработки ошибок и некоторые другие вещи.

Сам класс можно использовать как функцию (требуется всего лишь разрешить это в настройках, по-умолчанию включено):

PHP:
$SL("[b]код операции[/b]");
Поддерживаемые коды:
newformkey: возвращает HTML-код со скрытым ключом для защиты формы;
validateform: проверяет входящие данные, связанные с защитой формы;
printerrors: выводит все ошибки, произошедшие в процессе работы.

Так же можно использоват этот же метод для вызова аддонов: вместо кода операции нужно указать полное имя аддона (регистр важен).

В случае, если параметр, отвечающий за возможность использования этой опции имеет значение 0, можно обращаться к компонентам напрямую:
PHP:
$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.
Загрузить первую альфу можно по ссылкам:
Оф. сайт или по приложенному к сообщению файлу:
 

Вложения

~WR~

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

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

По коду:
На любой чих стоит "собака" (подавление ошибок). :(
Зачем __invoke? Без него отлично можно обойтись же.
 

ABlack

Новичок
~WR~,
И такая опция там есть... =/
Почему такое строгое отношение к сверхглобальным?)
(Между строк: скоро небольшое обновление, по-умолчанию отключит фильтрацию, если фильтр не указан.)
А собак можно убрать)
 

Absinthe

жожо
Почему такое строгое отношение к сверхглобальным?)
Потому что нельзя определить, где случилось говно.

Но у меня вопрос. Зачем? В первом посте ничего нет про то, зачем эта штука нужна.
 

ABlack

Новичок
Absinthe,
Упростить жизнь разработчикам. Два символа проще, чем составление выражений)
К тому же я надеюсь разработчики имеют представление о том, что должно придти, а фильтр - страховка.
В большей степени, конечно, нужен для защиты БД.
 

Absinthe

жожо
ABlack

Вопрос 1: Т.е. если у меня переменная будет использована сначала для логики, а потом пойдет в базу, то она будет засрана в одном из этих случаев?
Вопрос 2: Как ты определяешь, должна ли переменная экранироваться для записи в базу(что нужно очень редко). Или это снова разработчик должен определять?

P.S. Заметил, что у половины форума на аватарах коты.
 
Сверху