Как решить проблему с загрузкой изображений - PullRequest
0 голосов
/ 26 января 2019

Я использую облачное хранилище Google для размещения своего веб-сайта, у меня есть код для загрузки изображения обложки, например Facebook, после того как пользователь выберет изображение, которое будет загружено на сервер, и одновременно получит изображение.

Я дал полный доступ только к той папке с изображениями обложек, если я так и скажу, любая проблема может привести к взлому. Пожалуйста, дайте мне совет, мой путь хорош или нет?

if (!is_dir($directoryName)) {
                $oldmask = umask(0);
                mkdir($directoryName, 0777);
                umask($oldmask);
            }

1 Ответ

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

Я не думаю, что даже возможно использовать такой метод в первую очередь, поскольку Облачное хранилище на самом деле не имеет каталогов, файловые объекты просто отображаются находиться в каталогах из-за символов '/' в их именах, но они действительно находятся в единственном плоском пространстве имен, соответствующем целому сегменту.Из Особенности имен объектов :

Имена объектов находятся в плоском пространстве имен внутри сегмента, что означает, что разные сегменты могут иметь объекты с одинаковыми именами.Это также означает, что объекты не находятся в подкаталогах в сегменте.Например, вы можете назвать объект /europe/france/paris.jpg, чтобы он выглядел , который paris.jpg находится в подкаталоге /europe/france, но для Cloud Storage объект просто существует в корзине и имеет имя /europe/france/paris.jpg.

Правильные способы реализации контроля доступа в облачном хранилище описаны в Опции контроля доступа .

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

На этой странице представлен обзор подписанных URL-адресов, который представляет собой механизм аутентификации строки запроса для сегментов и объектов.Подписанные URL-адреса предоставляют возможность ограниченного по времени доступа для чтения или записи любому пользователю, владеющему URL-адресом, независимо от того, есть ли у него учетная запись Google.Чтобы узнать, как создать подписанный URL, прочитайте Создание подписанных URL с помощью gsutil и Создание подписанных URL с помощью программы .

Поскольку вы планируете это делатьиз вашего кода, второй подход из приведенной выше цитаты - это то, что вам нужно - по сути, сводится к отправке конкретного запроса POST на специально созданный URL.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...