Создание системы плагинов в PHP

В моем понимании плагин не должен сам себя загружать, так что нельзя писать в нем строку типа:

$plugins[] = new plugin_silencer();


Надо загружать его посредством ядра.

Tags: php plugin blog | 2013-08-12 12:05:58

Философия модульных сайтов, часть 1

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

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

Tags: php plugin blog module | 2013-08-12 12:07:01

Философия модульных сайтов, часть 2

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

Для начала определимся из каких компонентов будет состоять наша система.

Я предлагаю выделить 3 основных:

  • Ядро

  • Модуль

  • Плагин

Tags: php plugin blog module | 2013-08-12 12:10:37

Модульный сайт изнутри

Перейдем наконец к написанию CMS. Писать мы её конечно будем на PHP. В данной статье я не буду подробно рассматривать создание плагинов (я уже показывал пример в своей другой статье), а так же соединение с базой данных и управление пользователями. Все это будет позже, а пока я покажу основные принципы.

Tags: php plugin blog module | 2013-08-12 12:19:43

Безопасность сайтов

Взломать можно все,
это лишь вопрос времени.

 

В последнее время угроза взлома сайтов резко возросла. Общедоступность информации о методах взлома и безнаказанность хакеров привели к тому, что даже школьники начинают ломать сайты. К сожалению, даже в самых прогрессивных системах находят уязвимости, попробуйте набрать в google «уязвимости Joomla!» или «exploit DLE» и вы найдете десятки дыр в безопасности. Существует огромное количество классов уязвимостей я приведу некоторые, самые распространенные:

 

  • XSS

  • database injection

  • shellcode

  • php magic methods

  • Bruteforce

     

Я не ошибся занеся брут в уязвимости - от перебора паролей должен защищаться как сам скрипт, так сервер. Но давайте по-порядку.

 

XSS — класс уязвимостей позволяющий хакеру вставить свой HTML-тег на сайт, подразделяется на активный(виден всем) и пассивный(доступен по определенной ссылке). В результате можно получить cookies пользователей, в том числе и админа, или же заразить машины клиентов вирусом.

 

Database injection — возможность выполнять запросы к базе данных через скрипт. Наиболее опасная и распространенная уязвимость, так как злоумышленник получает доступ и к паролям, и к контенту сайта.

 

Shellcode — возможность исполнять команды на сервере через скрипт. Чаще всего на сайт заливается шелл через DDOS или уязвимость в самом скрипте.

 

Php magic methods — возможность выполнить PHP скрипт с помощью десериализации(функции __unserialize, __wake, и прочих) недостаточно отфильтрованного пользовательского ввода. Публичной огласке подверглась в ноябре 2009 года Стефаном Эссером.

 

Bruteforce — подбор пароля к пользователю или админке. Достаточно просто блокируется каптчей и/или запретом на попытку ввода пароля nое количество раз.

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

 

Всегда ваш,

Александр 7ion.

Tags: php security xss web exploit | 2013-08-12 12:22:37

Многозадачность в PHP

Сложилось общее мнение, что из-за отсутствия в PHP потоков, как в C++ или JavaPHP не является многозадачным языком. Грубо говоря нельзя исполнять несколько команд одновременно. В результате многие разработчики выходили из положения с помощью эмуляции в виде асинхронных сокетов(Asynchronous Sockets) или мультикурл (curl_multi_init), некоторые использовали библиотеку pcntl_fork которая не входит в стандартную сборку PHP. Да, PHP не поддерживает обработку потоков, но он может быть многозадачным.

Tags: php thread | 2013-08-12 12:29:07

Простая защита от MySQL injection

MySQL инъекции очень распространенная и наиболее опасная ошибка. С её помощью можно сделать много пакостей: от неавторизованного входа, до дефейса. Данная уязвимость позволяет злоумышленику выполнять произвольные команды на сервере базы данных.

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

Tags: php mysql injection security | 2013-08-12 12:32:02

Создаем RSS ленту

RSS ленты стали очень распространенным способом узнать об обновлении того или иного сайта. Сейчас практически на любом сайте есть такая лента, как сделать её на своем сайте посредством PHP я сейчас расскажу.

Tags: php rss xml | 2013-08-12 12:33:00

Парсинг страницы на PHP

Последнее время мне очень часто приходится парсить страницы разных сайтов. Когда я начинал изучать эту тему, то заметил, что есть 2 подхода к анализу контента страницы: анализ регулярными выражениями и с помощью phpQuery или simpleHtmlDOM. Будучи не сторонником использования чужих библиотек я выбрал 1ый путь.

Tags: php parse xml | 2013-08-12 12:34:41


© Alexander Semion