Что-то я все чаще стал натыкаться на посты о Ruby On Rails, MVS и разных php-фреймворках. Думаю, пора обратить свое пристальное внимание на эту область веб-разработки.
18.11.2008
CakePHP
Sypex Dumper
Sypex Dumper — это PHP-скрипт, с помощью которого можно просто и быстро создать резервную копию (бекап, дамп) базы данных MySQL, а также восстановить в случае необходимости базу данных из резервной копии.
Sypex Dumper в отличии от многих подобных скриптов не загружает бекап-файл целиком в память, благодаря чему, ему безразличен размер базы данных и он одинаково быстро работает, как с маленькими, так и с большими объемами данных.
Sypex Dumper создан специалистами украинской компании БИНОВАТОР.
Sypex Dumper Lite распространяется по лицензии GNU GPL, т. е. является абсолютно бесплатным.
Простая защита от DoS-атак с помощью MySQL
Организовать простую защиту от DoS-атак для сайтов, использующих PHP MySQL, можно следующим образом. В MySQL создается таблица (будем называть ее ip_check) с полями lasttime, count, ip (все поля — типа INTEGER, причем ip — первичный ключ).
Сразу после подключения к базе данных выполняется проверка, есть ли для данного IP-адреса запись в таблице. Если записи нет, она создается, при этом в count пишется 1, в lasttime — текущее время. Если запись уже есть, то проверяется, когда она была сделана (поле lasttime), и если прошло менее определенного количества секунд, то поле count увеличивается на 1, в противном случае приравнивается единице, и производится обновление записи в таблице (записывается новый count и lasttime). Далее происходит проверка величины count, и если она превысила некоторое пороговое значение, выдается статус 500 (или 403 или 503), сообщение об ошибке, и выполнение скрипта завершается.
Таким образом, для выполнения проверки требуется всего одной таблица с предельно простой структурой и 2 запроса SQL. Также можно добавить еще одно поле status, в которое ставить 1, если IP-адрес забанен навсегда по каким-то причинам, и совместить проверку на DoS-атаки с проверкой на забаненные IP-адреса без добавления дополнительных запросов. При необходимости можно еще одним запросом добавить учет суммарной нагрузки за все время или нагрузки по подсетям.
Кроме того, перед завершением скрипта можно добавить проверку, сколько времени заняло его выполнение, и если оно превышает какую-то пороговую величину (например, 10 секунд), начислять этому IP-адресу “штрафные очки” (т.е. дополнительно увеличивать поле count).
В виде кода это можно представить следующим образом:
// $link -- соединение с БД, $ip_text -- IP-адрес
define('ALERT_TIME',300);
define('ALERT_COUNT',150);
function check_dos($ip_text, $link) {
$ip=ip2long($ip_text);
$res=mysql_query($link,'SELECT lasttime, count, status FROM ip_check WHERE ip="'.$ip.'"');
if (mysql_num_rows($res)==0) { // нет такого IP
$count=1;
mysql_query($link,'INSERT INTO ip_check (lasttime,count,ip,status) VALUES ('.time().',1,"'.$ip.'",0)');
}
else {
$data=mysql_fetch_row($res);
$status=$data[2];
if ($status!=2 && ($data[0]<time()-ALERT_TIME || $data[1]<ALERT_COUNT))) $count=1;
elseif ($status!=2) { $count=$data[1] 1; if ($count>=ALERT_COUNT) $status=1; }
if ($status!=2) {
mysql_query($link,'UPDATE ip_check SET count='.$count,', status='.$status.', lasttime='.time().' WHERE ip="'.$ip.'"';
}
if ($status) {
header($_SERVER['HTTP_PROTOCOL'].' 503 Temporary Unavailable');
trigger_error('Превышено число допустимых запросов!',E_USER_ERROR);
}
}
Кроме того, периодически следует очищать базу от старых записей (например, по cron). Кроме того, если ожидается большая интенсивность атак, возможно, имеет смысл заменить UPDATE-запрос на последовательность DELETE/INSERT, но в этом случае необходимо будет регулярно проводить оптимизацию таблицы.
Источник: Профессиональный Блог 4X_Pro http://www.xpro.su/archives/59
26.07.2008
Справочное руководство по MySQL
- 1 Общая информация
- 2 Установка MySQL
- 3 Учебное пособие по MySQL
- 4 Администрирование баз данных
- 5 Оптимизация в MySQL
- 6 Справочник по языку MySQL
- 7 Типы таблиц MySQL
- 8 Интерфейсы для MySQL
- 9 Расширение MySQL
- A Проблемы и распространенные ошибки
- B Привнесенные программы
- C Благодарности
- D История изменений и обновлений MySQL
- E Перенос на другие системы
- F Переменные окружения
- G Регулярные выражения в MySQL
- H GNU General Public License
- I GNU Lesser General Public License
- Команды SQL, функциональное оглавление
- Концептуальное оглавление
10.05.2008
Новая версия HeidiSQL
01.05.2008
Учебное пособие по PHP MySQL
Это действительно превосходный источник для начинающих PHP-программистов. Автор приводит массу примеров кода, используя который вы сможете сделать:
- подключение к базе данных,
- добавление, редактирование и удаление записей,
- извлечение данных,
- создание резервной копии базы данных.
Архив блога
-
▼
2008
(113)
-
▼
Декабрь
(16)
- Шаблоны на CSS
- Мотор для блога
- Обзор бесплатных WYSIWYG редакторов
- Кавычки
- Тренды в айдентике: мода или революция?
- Логотипы с LogoLounge.com
- 8 правил оформления ссылок
- Как отразить в бухгалтерском учете создание сайта,...
- Оценка затрат или во сколько обойдется создание са...
- Как определить стоимость сайта
- Модуль Apache mod_rewrite
- Визитка Лебедева
- вэвэвэ чукча руиз серии Чук и Мак автор: Кузнецо...
- Пиксельные логотипы
- Все логотипы мировых брендов в векторном формате
-
►
Сентябрь
(10)
- Работа с датой и временем в PHP 5.2
- Сборник лучших сайтов на sites.bestwebdevs.ru
- Настройка Dreamweaver’a
- Переход с Денвера-2 на Денвер-3
- Какие продукты Adobe поддерживает Vista
- Создание Flex-компонентов
- Бесплатные просмотрщики графики
- Как сделать гиперссылку с flash-банера на нужную с...
- Как узнать о получении новых писем?
- Блог Алексея «Борисыча» Матюшкина
-
▼
Декабрь
(16)
Рубрики
- :) (2)
- Adobe (2)
- apache (1)
- CS2 (3)
- CSS (4)
- denwer (1)
- Dreamweaver (1)
- Flash (2)
- java script (1)
- MySQL (6)
- PHP (7)
- Артемий Лебедев (6)
- безопасность (1)
- веб-разработка (39)
- допечатная подготовка (4)
- инструменты дизайнера (6)
- Календарная сетка (2)
- лого (2)
- логотипы (2)
- мониторы для дизайнеров (1)
- наблюдения (1)
- Наружная реклама (2)
- Перевод текста (1)
- плагины (3)
- портфолио (2)
- Правила дизайна (2)
- Правописание (15)
- просмотрщики изображений (1)
- профессиональные мониторы (3)
- Разработка сайтов (3)
- ресурсы (1)
- Русский язык (1)
- стоит посещать (1)
- типографика (1)
- Фото (3)
- электронная почта (1)
