Как создавался PHPSECURE

В предыдущей статье, я описал то немыслимое стечение обстоятельств, которое побудило меня сесть за разработку системы защиты от взлома, названной PHPSECURE.

В период осмысления и формулирования списка задач, которым должен отвечать этот продукт, возникло немало вопросов, над которыми пришлось медитировать долго и вдумчиво.
Как составить список всех запускаемых на сайте скриптов? Как предотвратить выполнение php-кода спрятанного в файле изображения? Как отфильтровать потенциально опасные запросы к скриптам, не нарушив при этом механизмы работы многочисленных CMS.

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

Из вопросов были сформированы четкие задачи, которые в свою очередь были решены. Например, проконтролировать выполнение PHP-кода в каком угодно файле, в том числе в файле изображения и запретить выполнение в случае, если запуск и выполнение данного файла не разрешены, достаточно просто используя директиву PHP auto_prepend_file, что изначально и было взято за основу.

Самое основное — ядро, контролирующее запуск скриптов и их содержимое, было разработано достаточно быстро. В процессе работы было уделено немало внимания совместимости с разными платформами, разными версиями PHP пятой ветки (поскольку PHP 5.2 и PHP 5.4 — это две огромные разницы, между которыми есть еще и PHP 5.3 и у него также свои тараканы).

Но помимо ядра, требовался такой немаловажный атрибут, как удобный веб-интерфейс, для управления всё разрастающимся в процессе разработки функционалом PHPSECURE. Все-таки защитить сайт от взлома, задача требующая творческого подхода, знаний и удобных инструментов.

Веб-интерфейс сильно затормозил разработку, поскольку во первых — из меня верстальщик, как из Nokia 3130 телефон — вроде крутой, да вот только устаревший :)
Плюс — я всё таки системный администратор, давным давно использующий Linux на домашнем компе и естесственно больше привыкший к командной строке, чем к кнопкам (писать команды на самом деле быстрее, честное слово :) ).

Как бы то нибыло, летом 2014 в моей жизни произошло множество неприятных событий, что заставило меня напрячся изо всех сил и завершить уже начатое. В течение августа и сентября, мой рабочий день длился около 20-ти часов в сутки, иногда и дольше, но к началу октября первая версия PHPSECURE была полностью оформлена, протестирована и готова к выходу в свет…