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

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

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

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

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

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

Tags: js javascript ajax | 2013-08-12 12:30:11

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

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

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

Динамическая смена событий в 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>

Tags: js javascript | 2013-08-12 12:25:50

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

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

 

В последнее время угроза взлома сайтов резко возросла. Общедоступность информации о методах взлома и безнаказанность хакеров привели к тому, что даже школьники начинают ломать сайты. К сожалению, даже в самых прогрессивных системах находят уязвимости, попробуйте набрать в 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

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

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

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

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

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

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

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

  • Ядро

  • Модуль

  • Плагин

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

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

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

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

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

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

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

$plugins[] = new plugin_silencer();


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

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


© Alexander Semion