Apparemment, j'ai dépensé un milliard d'heures en essayant la même chose avec des fichiers MP3 pour mon site web. Pour répondre:
1) Pas trop compliqué une tâche. (malgré mes heures Gazillion)
2) Ne pas signer d'URL à partir de Flash. Utilisez un fichier PHP hébergé auquel vous pouvez effectuer une requête AJAX pour obtenir des URL signées. Pour cela, la structure de répertoire de votre compartiment S3 doit avoir un motif cohérent qui rend l'emplacement du fichier, donné une certaine entrée, déterminable par programme.
Je ne sais pas que c'est un processus qui peut être contourné. La signature d'URL ne doit être effectuée que côté serveur et jamais côté client. Faites-moi savoir si vous voulez voir mon exemple de code AJAX. Ill le coller ici pour vous
3) Le processus de signature utilise un minimum de trois variables pour créer une signature: l'horodatage, l'emplacement du fichier (bucket/folder/floder/file), la clé secrète S3. Par conséquent, Chaque demande d'un fichier doit avoir une signature distincte. Les URL signées devraient avoir une validité très limitée (disons 10 secondes). Les utilisateurs qui peuvent trouver l'URL sans ces 10 secondes doivent être en mesure de télécharger le fichier. Avoir des signatures qui varient en fonction de l'horodatage seul peut vaincre (en grande partie sinon complètement) tout le but d'avoir des URL signées.
Pour signer des URL, utilisez le script ci-dessous. Cela fonctionne comme le charme et m'aurait sauvé beaucoup d'heures si je l'ai eu à temps. Regardez également le point 5 ci-dessous pour plus de sécurité.
http://www.richardpeacock.com/blog/2010/07/amazon-aws-s3-query-string-authentication-php
4) Pour certains lecteurs flash raison ne jouent pas Signés URL S3 pour les fichiers MP3. Je pense (GUESS) qu'ils ignorent la partie de l'URL une fois que l'extension .mp3 dans l'URL est lue. Ainsi, la partie chaîne de requête de l'URL est ignorée par le lecteur et ne peut pas lire le fichier. Ils jouent des fichiers publiquement restituables dans mon S3 Bucker. J'ai utilisé silverlight pour mon site et j'utilise désespérément pour une solution FLASH. Si c'est la raison pour laquelle les fichiers FLV protégés ne joueront pas non plus. Dans ce cas, vous devrez envoyer le fichier entier à votre client uniquement par l'intermédiaire de l'URL. Une solution que j'essaie d'éviter. 5) 5) pour protéger davantage vos URL, les obfusciter en utilisant un ou plusieurs des procédés dans le lien ci-dessous. Ils sont très simples.
http://www.pc-help.org/obscure.htm
6) En outre, votre approche de sécurité doit être à lancer la lecture du fichier sur le navigateur avant expiration de l'URL. La période d'expiration doit être suffisamment courte pour empêcher la détection d'URL avant expiration et doit être suffisamment longue pour permettre une latence suffisante pour commencer la lecture. C'est plus ou moins le cœur d'un streaming raisonnablement sécurisé utilisant des URL auto-expirantes.