Вернуться   Форум Пустоты.нет - приятное общение ! > Программирование > PHP

Отправка SMS по России и Украине.

.
 
 
Опции темы Опции просмотра
Старый 30.09.2006, 17:41   #1
Owner
 
Аватар для FuseR
 
male
Регистрация: 29.09.2006
Адрес: WORLD
Сообщений: 2,360
Провел(а) на форуме:
3 мес 0 нед 4 д
Репутация: 223 Добавить отзыв для FuseR
Лампочка Методы дополнительной защиты сайта

Методами дополнительной защиты сайта, работающего на php. Напишем пассивную защиту для обнаружения web шеллов, подумаем над способами защиты от брутфорса пароля и сделаем ещё несколько полезных вещей. Для начала хочу сказать, что данная статья прежде всего даёт пищу для размышления, так как я в основном буду подавать вам идеи, нежели исходный код. Итак, начнём…

Первый фрагмент кода, который я хочу вынести на ваш суд, «бьёт тревогу» в случае обнаружения в переменной посторонних знаков. Он пригодится для обнаружения попытки проведения sql инъекции и подобных атак.

Листинг 1:


function inj($what,$inj,$error) {
if (ereg(”[^$what]”,$inj)) die($error);
}


Пояснение 1:

Вызывать данную функцию следует так:


inj(’a-z0-9′,$var,$error);


a-z0-9 - символы, которые нужно пропускать (формат регулярных выражений)
$var - переменная, которую нужно фильтровать
$error - сообщение об ошибке (ошибка появится в случае нахождения посторонних символов)

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

Теперь я предлагаю перейти к теме защиты от брутфорса (подбора паролей). От брутфорса неплохо спасает следующий код:

Листинг 2:


sleep($sleep);


Пояснение 2:

$sleep - количество секунд, на которое сценарий останавливает свою работу.

Данный код рекомендую вставлять перед проверкой пароля. Например, двухсекундная задержка особо пользователю не помешает, а вот брутфорс применять будет бессмысленно. Разве что можно использовать много компьютеров (ботнет) для подбора пароля… Однако и это тоже решаемо. Например, если пользователь неверно ввёл пароль десять раз, можно забанить его по IP адресу (код не привожу). А ссылку для смены пароля отправить на e-mail пользователю. Так можно применять код из листинга 2 в поисковых механизмах сайта - для избежания DDOS атак.

Как идея - можно написать скрипт, который будет отсылать тебе sms/e-mail в случае поступления слишком большого количества запросов к сайту.

Следующий код можно использовать для нахождения web шеллов.

Листинг 3:


function srd($dir,$fn) {
if ($odir=opendir($dir)) {
$cdir=’0′;
while (false!==($file=readdir($odir))) {
if ($file!=”.”&& $file!= “..”) {
$cdir++;
}
}
closedir($odir); if($cdir!=$fn) { echo ‘Error!’; }
}
}


Пояcнение 3:

Вызывать данную функцию следует так:


srd(’test’,'15′);


test - имя папки
15 - число файлов в папке

При вызове данной функции начнётся подсчёт количества файлов и папок в папке и сравнение этого числа со вторым параметром (числом файлов и папок, которое должно быть в каталоге). Если при сравнении числа оказались разными (обнаружен посторонний файл или папка) - скрипт выдаст ошибку. Кстати, к выдаче ошибки рекомендую добавить ещё и функцию которая, будет отсылать e-mail/sms администратору. Чтобы администратор всегда был в курсе дел. Разумеется, приведённый код нужно вызывать в основных скриптах сайта. Если же у вас есть папка куда файлы постоянно добавляются (например, директория для закачки аватар на форуме), то рекомендую так же добавить в написанную мною функцию ещё и проверку типа и расширения файла.

Думаю, я показал вам методы нестандартного подхода к защите сайта. У меня ещё много идей (наверняка они появились и у вас по прочтению данной статьи). Например, можно настроить сервер так, чтобы он записывал все ошибки интерпретатора php в лог файл, который тоже будет парсить какой-нибудь скрипт на наличие фатальных ошибок… Пароли пользователей лучше шифровать алгоритмом md5 и прибавлять к ним (еще до шифрования) сложную комбинацию символов (которая будет зашита где-нибудь в теле скрипта). Так мы добьёмся того, что расшифровать пароль будет почти невозможно, а если в cookies при авторизации идентефикатором использовать не пароль, а что-нибудь ещё, то попасть в админ-панель сайта станет ещё труднее. Так же можно пароли от админ панели тоже зашить в теле скрипта. Тогда sql инъекций вообще можно особо не боятся…
Собственно на этом я заканчиваю статью, только хотелось бы дать последнюю рекомендацию, которой многие почему-то не следуют: всегда ставьте php_value error_reporting равным нулю, когда выкладываете сайт в интернет, и взломщики лишатся массы ценной информации.
FuseR вне форума   Ответить с цитированием

 



Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +3, время: 16:00.


© Форум "Пустоты.нет" - общение и знакомства 2006-2024, Мобильный контент
Работает на vBulletin® версия 3.9.25
Copyright ©2000 - 2020, Jelsoft Enterprises Ltd.
Перевод:zCarot. Стиль: vBSkins. Dir

Top100
Страница сгенерирована за 0.04590 секунд с 10 запросами