Защита в системе хостинга

Пример #1 Недостаточная проверка внешних данных ведет к…

<?php
// Удаление файла из домашней директории пользователя
$username = $_POST[‘user_submitted_name’];
$userfile = $_POST[‘user_submitted_filename’];
$homedir = “/home/$username”;
unlink(“$homedir/$userfile”);
echo “Файл был удален!”;
?>



Поскольку переменные вводятся в пользовательской форме, существует возможность удалить файлы, принадлежащие кому-либо другому, введя соответствующие значения. В этом случае может понадобиться авторизация. Посмотрим, что произойдет, если будут отправлены значения “../etc/” и “passwd”. Скрипт выполнит следующие действия:
Пример #2 … атаке на файловую систему

<?php
// Удаление любого файла, доступного из PHP-скрипта.
// В случае, если PHP работает с правами пользователя root:
$username = $_POST[‘user_submitted_name’]; // “../etc”
$userfile = $_POST[‘user_submitted_filename’]; // “passwd”
$homedir = “/home/$username”; // “/home/../etc”
unlink(“$homedir/$userfile”); // “/home/../etc/passwd”
echo “Файл был удален!”;
?>

Cуществуют две важные меры, которые можно предпринять для предотвращения описанной проблемы.
Ограничить доступ пользователя, с правами которого работает веб-сервер с PHP.
Проверять все данные, вводимые пользователем.
Вот улучшеный вариант кода:
Пример #3 Более безопасная проверка имени файла



<?php
// Удаление любого файла, к которому имеет доступ пользователь,
// под которым запущен PHP.
$username = $_SERVER[‘REMOTE_USER’]; // использование авторизации
$userfile = basename($_POST[‘user_submitted_filename’]);
$homedir = “/home/$username”;
$filepath = “$homedir/$userfile”;
if (file_exists($filepath) && unlink($filepath)) {
$logstring = “$filepath удаленn”;
} else {
$logstring = “Не удалось удалить $filepathn”;
}
$fp = fopen(“/home/logging/filedelete.log”, “a”);
fwrite($fp, $logstring);
fclose($fp);
echo htmlentities($logstring, ENT_QUOTES);
?>

RuCoreNET - лучшее для вас!


Поделись статьей с друзьями


82 просмотров


0 0 vote
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments


Do NOT follow this link or you will be banned from the site!
0
Would love your thoughts, please comment.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: