Как скрыть URL загрузки Firebase Storage с сетевой вкладки браузеров?

Вам нужно извлечь данные изображения base64 из этой строки, декодировать его, а затем вы можете сохранить его на диск, вам не нужен GD, поскольку он уже является png.

$data = 'data:image/png;base64,AAAFBfj42Pj4';

list($type, $data) = explode(';', $data);
list(, $data)      = explode(',', $data);
$data = base64_decode($data);

file_put_contents('/tmp/image.png', $data);

И как однострочный:

$data = base64_decode(preg_replace('#^data:image/\w+;base64,#i', '', $data));

Эффективный метод для извлечения, декодирования и проверки ошибок:

if (preg_match('/^data:image\/(\w+);base64,/', $data, $type)) {
    $data = substr($data, strpos($data, ',') + 1);
    $type = strtolower($type[1]); // jpg, png, gif

    if (!in_array($type, [ 'jpg', 'jpeg', 'gif', 'png' ])) {
        throw new \Exception('invalid image type');
    }

    $data = base64_decode($data);

    if ($data === false) {
        throw new \Exception('base64_decode failed');
    }
} else {
    throw new \Exception('did not match data URI with image data');
}

file_put_contents("img.{$type}", $data);
0
задан CuriousHash 14 March 2019 в 08:24
поделиться

1 ответ

Вы не можете. Когда вы каким-либо образом отказываетесь от доступа к URL-адресу загрузки Cloud Storage, вы полностью доверяете этому пользователю. Они могут поделиться этим с кем угодно. Если вы не доверяете этому пользователю, не сообщайте ему URL.

Если вам не нравится, как это работает, не используйте URL-адреса загрузки и разрешайте только безопасные загрузки через Firebase SDK. В этот момент вы доверяете пользователю, который не будет брать контент, загружать его в другое место и генерировать URL-адрес.

0
ответ дан Doug Stevenson 14 March 2019 в 08:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: