2010-07-28 8 views
0

J'ai une application SL où je devrais implémenter le sous-système de gestion de fichiers. J'ai la structure hiérarchique des fichiers \ dossiers (juste la description). De plus, chaque fichier \ dossier a ses propres permissions sur les utilisateurs \ groupes. Je voudrais implémenter qu'un utilisateur qui a la permission de télécharger le fichier ne pourrait pas le donner à un autre utilisateur, qui n'a pas cette permission. Donc, si l'utilisateur a l'autorisation de téléchargement, il obtient le lien www.site.com/file.rar et le télécharge. Mais il pourrait donner ce lien à une autre personne sans permission. Quel alogorithme est plus approprié dans ce cas? Toute aide serait appréciée.Protéger le lien pour les téléchargements publics

Répondre

2

directement SilverLight Le serveur Web doit être en charge et assurer l'authentification et l'autorisation pour toute demande de fichiers. Ce n'est pas spécifique à Silverlight car c'est un problème général. Votre serveur Web doit valider chaque demande de téléchargement de fichier par rapport à l'utilisateur actuellement connecté (qui, si vous utilisiez ASP.NET, pourrait utiliser l'une des méthodes d'authentification telles que Forms Auth ou Windows Auth par exemple). Vous pourriez avoir un gestionnaire HTTP par exemple qui effectue cette validation et autorise le téléchargement (et fournit les octets du fichier de téléchargement). Here's un exemple plus ancien, mais il semble toujours applicable pour ASP.NET par exemple. Ou bien, vous pouvez fournir un jeton généré de manière sécurisée, expirant (peut-être une fois?) À la place d'un nom de fichier, mappé à une demande de fichier préautorisée, et servant à nouveau le fichier à la demande. Celui-ci est plus difficile à gérer à bien des égards et pourrait conduire à une expérience utilisateur moins agréable s'il n'est pas fait avec précaution (surtout si le téléchargement peut être interrompu et doit être redémarré, alors l'ancien jeton peut ne pas être valide). Je voudrais aller avec la première suggestion car il est plus fiable et plus facile à contrôler et à gérer (en ignorant les spécificités de la technologie que ce modèle est disponible sur toutes les plates-formes Web).

0

Vous pouvez stocker des informations d'autorisation dans une base de données. Ensuite, chaque utilisateur aura son propre compte et son propre ensemble d'autorisations. Vous pouvez ensuite définir des autorisations de groupe d'utilisateurs sur des groupes de fichiers ou des fichiers individuels.

Cela pourrait probablement également être réalisé en utilisant les informations d'autorisation de fichier stockées au niveau du système d'exploitation.

Vous pouvez alors avoir une page dynamique qui prend un nom de fichier comme requête et vérifie une combinaison de nom d'utilisateur et de mot de passe et vérifie si ce fichier est autorisé pour cette personne. Par conséquent, lorsque quelqu'un accède à ce lien de fichier, il doit d'abord fournir les informations d'identification correctes à télécharger, sans quoi il se verra refuser l'accès.

J'espère que cette aide, ce n'était pas une réponse, mais un langage plus agnostique

Questions connexes