время
|
|
Часть IV. Безопасность Содержание 23. 16
решения описанной проблемы.
Ограничить доступ пользователя, с правами которого работает веб-сервер.
Проверять все данные, вводимые пользователем.
Вот улучшеный вариант кода:
Пример 27.3. Более безопасная проверка имени файла
<?php
// Удаление любого файла, доступного из PHP-скрипта.
$username = $_SERVER['REMOTE_USER']; // использование авторизации
$homedir = "/home/$username";
$file_to_delete = basename("$userfile"); // усечение пути
unlink ($homedir/$file_to_delete);
$fp = fopen("/home/logging/filedelete.log","+a"); //логируем удаление
$logstring = "$username $homedir $file_to_delete";
fwrite ($fp, $logstring);
fclose($fp);
echo "$file_to_delete has been deleted!";
?>
Однако и такая проверка не учитывает все возможные ситуации. Если система авторизации позволяет пользователям выбирать произвольные логины, вломщик может создать учетную запись вида "../etc/" и система опять окажется