Безопасно проверить файлы

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Закрыто
goodfriend
Сообщения: 50
Зарегистрирован: 2018.06.02, 09:58

Безопасно проверить файлы

Сообщение goodfriend »

Добрый день.

Поставили задачу, чтобы можно было загружать картинки и pdf-ки.
Вот этой проверки в модели будет достаточно, чтобы не подсунули чего то плохого?

Код: Выделить всё

    public function rules()
    {
        return [
            [['files'], 'file', 'extensions' => ['png', 'jpg', 'jpeg', 'gif' , 'pdf'], 'maxFiles' => 10, 'mimeTypes' => 'application/pdf, image/*'],
        ];
    }
Помню в просто php мы картинки еще через getimagesize анализировали.
Не смотрел, в этих валидаторах это делается или нет, когда расширение картинки.

Ресурсы эти будут в веб доступных папках сохраняться.
goodfriend
Сообщения: 50
Зарегистрирован: 2018.06.02, 09:58

Re: Безопасно проверить файлы

Сообщение goodfriend »

Думаете если я гружу в доступную снаружи папку файлы, при этом сохраняя их со случайным именем ( довольно длинным) - это достаточная защита?
По идее они снаружи не смогут как то перебирать адреса и искать существующие файлы.

Хотя файлы эти , как бы не аватарки, а поважнее, и по идее только зареганным нужны.

Нужно в таких случаях больше защищать? , через отдачу файла кодом? sendFile в контроллере. Как бы плагины не послетали от этого.
rak
Сообщения: 2181
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Безопасно проверить файлы

Сообщение rak »

если нужно, чтобы файл не был доступен по прямой ссылке - нужно заливать его не в публичную папку и отдавать через sendFile, перед этом проверяя права доступа.
goodfriend
Сообщения: 50
Зарегистрирован: 2018.06.02, 09:58

Re: Безопасно проверить файлы

Сообщение goodfriend »

Переделал на "через sendFile" , но выскочили проблемы:
viewtopic.php?f=19&t=65865
goodfriend
Сообщения: 50
Зарегистрирован: 2018.06.02, 09:58

Re: Безопасно проверить файлы

Сообщение goodfriend »

решил. sendFile для такого неверно использовать.
Закрыто