Главная > Программирование > РНР: настольная книга программиста
<< Предыдущий параграф
Следующий параграф >>
<< Предыдущий параграф Следующий параграф >>
Макеты страниц

6.3. Безопасность файловой системы

РНР подчинен безопасному построению многих серверных систем с доступом к файлам и директории каталогов. Это позволяет получить доступ к тем файлам, которые можно прочесть. Защита должна быть организована для любого из файлов, доступ к которому может принести очень много неприятностей.

С тех пор как был разработан РНР, начались проблемы следующего характера: скрипт, написанный на РНР, может позволить вам читать системные файлы типа /.../password, изменить связи вашей локальной сети на основе протокола CSMA-CD, может послать массивные задания на принтер и т. д. Это вызывает неприятности, связанные с системой обеспечения безопасности серверов.

Рассмотрим следующий пример, в котором при реализации скрипта происходит удаление файла из каталога:

<?php

// удаление файла из директории php

$username = $user_submitted_name;

$homedir = "/home/$username" ;

$file_to_delete = $userfile;

unlink ("$homedir/$userfile") ;

echo "$file_to_delete has been deleted!";

?>

Если же пользователь знает расположение каталогов на жестком диске, то возникает более серьезная угроза. В этом случае он без каких-либо проблем сможет удалить файл, содержащий пароли или любую другую важную информацию. Например:

<?php

$username = "../apache/";

$homedir = "/home/$username;

$file_to_delete = "passwd";

unlink ($homedir. $file_to_delete);

echo "$file_to_delete has been deleted!";

?>

В данном примере переменной задается имя каталога пользователя, в котором находится необходимый для удаления файл. Переменной $homedir задается путь направления поиска. Функция unlink ($homedir.$file_to_delete); производит по указанному пути удаление. Echo() выводит результат.

Хотелось бы выделить два важных пункта, запомнив которые вы сможете предотвратить эти проблемы:

• необходимо в некоторой степени ограничивать возможностипользователей;

• проверяйте программы, которые будут запускаться на сервере.

Соблюдая эти пункты, вы избавитесь от проблем, связанных с употреблением файловых функций.

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

<< Предыдущий параграф Следующий параграф >>
Оглавление