как защитить удаление файлов из другой папки - PullRequest
0 голосов
/ 07 января 2019

Я создал простое управление файлами для пары пользователей. Структура: у каждого пользователя есть карта в каталоге 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>

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

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

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

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

1 Ответ

0 голосов
/ 08 января 2019

Это то, что я сделал, чтобы защитить манипуляции через инспектор браузера: Имена папок, такие как 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;
        }

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

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

...