Прогресс: 70%

Данный сайт один из моих проектов

2013-08-12 00:00:00 | Тэги : php 7ion blog

Заметки по проекту:

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

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

$plugins[] = new plugin_silencer();


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

Тэги: php plugin blog | 2013-08-12 12:05:58

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

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

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

Тэги: php plugin blog module | 2013-08-12 12:07:01

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

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

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

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

  • Ядро

  • Модуль

  • Плагин

Тэги: php plugin blog module | 2013-08-12 12:10:37

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

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

Тэги: 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.

Тэги: php security xss web exploit | 2013-08-12 12:22:37

Динамическая смена событий в Javascript

Порой надо, чтобы событие кнопки в веб-интерфейсе изменилось, оказывается это очень просто сделать.

element.onclick=function(){myFunction(parametrs);};

 

Field1:
Field2:

Click the button to copy the content of Field1 to Field2.

 

А вот исходный код примера:

<script>
someObject = function()
{
this.alme = function(el,postvars)
{
alert(postvars);
el.onclick=function(){myObject.alme(this,document.getElementById('field2').value);};
}
}
myObject = new someObject();
</script>

Field1: <input type="text" id="field1" value="Hello Sky!" />
<br />
Field2: <input type="text" id="field2" value="Bye Ground!" />
<br /><br />
Click the button to copy the content of Field1 to Field2.
<br />
<button onclick="myObject.alme(this,document.getElementById('field1').value)">Show Text</button>

Тэги: js javascript | 2013-08-12 12:25:50

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

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

Тэги: php thread | 2013-08-12 12:29:07

AJAX, начало запроса

AJAX (от англ. Asynchronous Javascript and XML — «асинхронный JavaScript и XML») - способ создания веб-приложений с интерактивным интерфейсом, за счет «фонового» обмена между сервером и клиентом. Обновление данных происходит без перезагрузки всей страницы, что позволяет экономить трафик.

Тэги: js javascript ajax | 2013-08-12 12:30:11

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

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

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

Тэги: php mysql injection security | 2013-08-12 12:32:02

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

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

Тэги: php rss xml | 2013-08-12 12:33:00

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

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

Тэги: php parse xml | 2013-08-12 12:34:41

Synology DS-207 установка компилятора

Маленькая заметка больше для себя любимого.
Чтобы поставить GCC на Synology DS-207 надо:

Поставить ipkg

wget http://synofred.free.fr/dl/syno/ds_armmarvell-bootstrap_1.0.xsh

или

wget http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable/

 

и запустить скрипт sh ds*.sh

 

Изменить sourcelist

 

vi /opt/etc/ipkg.conf

добавляем

 

src synoware http://ipkg.nslu2-linux.org/feeds/optware/syno-x07/cross/unstable

А так же создаем папку

mkdir –p /opt/etc/init.d


Обновить список пакетов

ipkg update

Вот и все, товарищи

Тэги: linux gcc synology embeded | 2013-08-12 12:49:23


© Alexander Semion