1

ObjectifURL signées Google Cloud Storage - Comment spécifier une taille de fichier maximale?

Nous souhaitons que les utilisateurs puissent télécharger des images dans Google Cloud Storage.

Problème

Nous pourrions y parvenir indirectement avec notre serveur comme intermédiaire - en premier lieu, les utilisateur télécharge sur notre serveur, notre serveur privilégié peut télécharger sur Cloud Storage. Cependant, nous pensons que cela est inutilement lent, et que l'utilisateur souhaite plutôt télécharger directement dans Cloud Storage.

Solution proposée

Pour un téléchargement direct nous générons un Signed URL sur notre serveur. L'URL signée spécifie une heure d'expiration et ne peut être utilisée qu'avec le verbe HTTP PUT. Un utilisateur peut demander une URL signée, puis - pour un temps limité seulement - télécharger une image sur le chemin spécifié par l'URL signée.

problème avec la solution

Est-il possible d'appliquer une taille de téléchargement maximale de fichier? Évidemment, nous aimerions éviter les utilisateurs qui tentent de télécharger des fichiers de 20 Go lorsque nous nous attendons à < fichiers de 1 Mo.

Il semble que ce soit une vulnérabilité évidente, mais je ne sais pas comment y remédier tout en utilisant SignedURLs.

Il semble y avoir un moyen de faire cela en utilisant les documents de politique (Stack Overflow answer), mais la question a maintenant plus de 2 ans.

Répondre

2

Les documents de politique sont toujours la bonne réponse. Elles sont documentées ici: https://cloud.google.com/storage/docs/xml-api/post-object#policydocument

La partie importante du document de politique que vous aurez besoin est:

["content-length-range", <min_range>, <max_range>]. 
+0

Le même lien dit ceci: « _Note: À moins que vous devez utiliser des formulaires HTML (généralement par le biais d'une web navigateur) pour télécharger des objets, nous recommandons fortement d'utiliser l'objet PUT au lieu de POST._ ". Cependant, il n'y a pas de "contenu-longueur-plage" défini pour les objets PUT. Est-ce une fonctionnalité incluse, mais non documentée? –

+0

Non, il n'existe que pour POST, malheureusement. –

+1

Google vous recommande donc d'utiliser PUT pour télécharger des objets dans Cloud Storage, mais ne vous permet pas de spécifier une taille de fichier maximale. On dirait que PUT est totalement inutile alors ... –