как защитить удаление файлов из другой папки

Я создал простое управление файлами для пары пользователей.
Структура: у каждого пользователя есть карта в директории uploads как ниже:

uploads/john/-->files inside

uploads/bill/-->files inside

Для удаления файлов я использую эту форму «

<form class="sfmform" method="post" action="">
<input type="hidden" name="deletefile" value="<?php echo $dir.'/'.$file">
<input type="submit" class="sfmdelete" name="delete" value="Delete">
</form>

Вар $dir.'/'.$file показывает мне точное местоположение файла, например:
uploads/john/cat.jpg

Допустим, я Джон и я знаю, что имя другого законопроект.
И я думаю, законопроект также имеет файл в своем файле dog.jpg

Я открываю инспектор браузера для удаления файла в своей папке и изменяю значение скрытой формы ввода uploads/john/cat.jpg в uploads/bill/dog.jpg и нажмите на удалить, я действительно удалил изображение собаки из счета его папку.

Как я могу защитить этот вид манипуляций через инспектор браузера?

3

Решение

Вот что я сделал, чтобы защитить манипуляции с помощью инспектора браузера:
Названия папок как john а также bill генерируются этой переменной: UserID

Все папки находятся внутри uploads каталог. Так это выглядит так:uploads/john/...
а такжеuploads/bill/...

Значение скрытого текстового поля создается с помощью: $dir.'/'.$file и всегда выглядит uploads/john/file.jpg

Теперь я сравниваю $UserID со значением скрытого поля после первого / как это:

$pieces = explode("/", $_POST['deletefile']);
$hiddenvalue = $pieces[1];
if( $UserID != $hiddenvalue ) {     // if these values not the same
echo "Forbidden!";
exit;
}

Я проверил это, и, кажется, работает нормально …

Хорошо! Это не самое профессиональное решение, но я хотел сделать этот скрипт без базы данных

2

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector