AWS S3 / Ruby on Rails / Heroku: trou de sécurité dans mon application
-
25-09-2019 - |
Question
J'ai une route dans ma config qui dit que pour une page, par exemple /secure
, il y a une connexion nécessaire (fait par authlogic). Un before_filter dans mon contrôleur prend de ces soins. Cela fonctionne très bien, la page et ses ressources ont limité l'accès -. Par l'application
Le problème est, nous utilisons Amazon S3 pour le stockage sur cette application (basée sur refinerycms) déployée à Heroku. J'ai un seau et il fonctionne très bien.
Cependant, toute ressource insérée dans la partie sécurisée de l'application est directement accessible via le navigateur. En d'autres termes, la page /secure
contient des éléments tels que les fichiers PDF. Bien que grâce à l'application des ressources sont sécurisées, les fichiers PDF sont accessibles partout dans l'Internet (par exemple URL): http://s3.amazonaws.com/my_bucket/images/1234/the_file_which_should_be_secure.pdf
Puis-je faire un contrôle d'accès à grain fin sur S3? Est-ce que je dois créer un nouveau seau? Idéalement, je voudrais mettre un drapeau sur ma ressource qui le rend invisible dans Internet -. Je ne sais pas
Toute suggestion bienvenue.
P.S. openid.org a un cert ssl a expiré, si nécessaire pour créer un nouveau compte vide que je ne pouvais pas vous connecter
La solution
La plus simple et la solution est plus facile juste pour nommer vos actifs S3 avec des noms de fichiers aléatoires, impossibles à deviner, et seulement exposer les URL secrètes aux personnes qui devraient avoir accès.
Voici comment les photos Facebook et de nombreux autres sites de travail (il n'y a pas la vie privée ou la sécurité au-delà de l'obscurité des noms de fichiers individuels).
Autres conseils
Vous pouvez essayer ce qui est dit sur cette page:
http://thewebfellas.com/blog/2009/ 8/29 / protection-vos-Paperclip-téléchargements
Les specficics sont sous la section "Plus le streaming, le temps pour une redirection".
Résumé:. S3 dispose de quatre politiques d'accès en conserve, à l'aide de la politique de lecture authentifiée S3 fournit un moyen de générer une URL authentifiée pour le contenu privé qui ne fonctionne que pour une période de temps spécifiée
Je ne l'ai pas vraiment fait cela, alors s'il vous plaît laissez-moi savoir si cela fonctionne pour vous. : -)
Si vous utilisez paperclip, vous pouvez restreindre l'accès aux objets stockés sur Amazon S3 par échéance url. (Si vous ne me dérange pas d'utiliser url expirant)
Voici le Wiki de thoughtbot / paperclip sur GitHub
En outre, il y a quelques liens utiles en bas de cette page que vous ne voulez pas manquer.
Peut-être que je suis confus quant à ce que vous essayez d'accomplir, mais S3 a accès aux autorisations qui nécessitent une clé de chiffrement dans l'URL que vous fournissez à l'utilisateur. Lorsque vous utilisez la pierre précieuse aws-s3, cette option est activée par défaut. Par conséquent, vous ne devriez pas être en mesure d'accéder aux fichiers, à moins que l'utilisateur utilise le lien avec la clé cryptée intégrée en elle. Cela vous demandera de vous assurer que le fichier est réglé sur l'accès autorisé.
Plus d'informations peuvent être trouvées http://amazon.rubyforge.org/ sur la pierre précieuse. Recherchez la documentation relative au contrôle d'accès (je pense « authenticated_read » est ce que vous voulez).