PHP universal delete file

86
06 марта 2021, 05:40

Какие могут быть недостатки у кода ниже ?

Предоставление удаления файла передаётся через заранее включённый shell в файловую систему OS

// universal delete file and dirs (Windows, Other os)
function DeleteFileString(string $file) {
    if(is_file($file = strOsSlesh($file))) {
        return unlink($file);
    } elseif(is_dir($file)) {
        return (DIRECTORY_SEPARATOR == '\\') ?
            `rd /S /q $file` // Windows delele all files
        :   `rm -rf  $file`; // Other os delele all files
    }
    return false;
}

Плюсы в том, что работает на много быстрее всего, что есть из штатных известных возможностей

[php] => 7.3.4
[DeleteFileString] => 5.343348
[IteratorDeleteDir] => 11.705709
[scandirDelete] => 11.533627
[globDelete] => 13.708378
[opendirDelete] => 11.481467
)

https://pastebin.com/8XQLqt4K

Answer 1

Если PHP или Shell через который вы выполняете данные команды - не имеет root прав, тогда это вполне безопасно для самой системы. Но не совсем безопасно для конкретного пользователя, если он может удалить свои же директории которые как-то критично влияют на работу сайта. Я думаю, желательно как-то контролировать пути для удаления, например установить такое ограничение:

если файлы для конкретного пользователя лежат в папке /home/user_name, тогда от юзера принимать только /path_to_file и уже внути скрипта складывать в кучу: /home/user_name/path_to_file

READ ALSO
Как обработать Javascript-объект (невалидный JSON) в PHP?

Как обработать Javascript-объект (невалидный JSON) в PHP?

Возникла проблема - API отдаёт данные в JSON формате, примерно в таком виде:

86
mysql группировка по категории

mysql группировка по категории

есть таблица категории

141
Yii2 проблема с отображением страницы

Yii2 проблема с отображением страницы

Помогите решить вопрос с отображением страницы, не могу понять в чем проблемаИногда страница отображается в таком формате

128