2010-10-05 4 views
2

Je crée un petit site Web d'hébergement de fichiers, et chaque utilisateur peut télécharger plusieurs fichiers, et aura accès à seulement ses fichiers et ne peut pas accéder à d'autres fichiers, par exemple en devinant l'URL.
est-il un moyen de sécuriser les fichiers d'avoir accès en tout propriétaire et pas de corps d'autre « peut être administrateur du site Web aura également accès »Comment empêcher d'autres utilisateurs de télécharger/ouvrir d'autres fichiers?

Mise à jour si vous pouvez me montrer par exemple, exemple de code ou démo qui sera sois super.

Répondre

5

Vous devez stocker des fichiers dans un répertoire non servi par IIS, puis créer un script qui prend un ID de fichier, valider que l'utilisateur a accès et renvoie le contenu du fichier.

1

Si chaque utilisateur dispose de son propre dossier dans lequel télécharger des fichiers, vous pouvez utiliser web.config pour autoriser uniquement cet utilisateur à valider l'accès à son propre dossier. Si ce n'est pas le cas, j'imagine que vous devrez mettre une couche (pilotée par les données) entre le demandeur et le fichier qui validerait l'accès avant de servir le fichier.

2

Cela dépend s'il s'agit d'une application Internet ou intranet interne. S'il est interne et qu'il utilise l'authentification Windows ou l'authentification Active Directory, vous pouvez protéger les fichiers en utilisant des autorisations basées sur des fichiers.

S'il s'agit d'une application Internet externe, vous devrez développer une logique pour protéger vos fichiers. Supposons que votre Authentification est robuste - vous pouvez confirmer avec précision qu'un utilisateur est ce qu'il prétend être. Ce dont vous avez besoin maintenant est un système d'autorisation - quelque chose qui détermine ce qu'un utilisateur identifié peut accéder. Supposons que vous ayez un identifiant pour l'utilisateur 101. Vous pouvez ajouter 101_ au début des noms de fichiers auxquels seul cet utilisateur peut accéder. 101_report.pdf exemple fopr. Vous auriez besoin d'écrire du code pour éviter de diffuser des fichiers préfixés avec le mauvais identifiant. (vous pouvez supprimer le 101_ après avoir effectué le contrôle d'autorisation si vous ne voulez pas que vos utilisateurs le voient, ou vous pouvez stocker tous les fichiers de l'utilisateur dans un dossier appelé 101).

Si vous voulez des fichiers accessibles à plusieurs utilisateurs, vous devrez développer un moyen de lier un utilisateur à un fichier et de vérifier ces liens chaque fois que vous affichez votre page. Vous pouvez également envisager de regrouper les groupes si vous pouvez logiquement regrouper les utilisateurs dans des groupes réels qui partageront un ensemble de fichiers donné. Mais faites-le seulement si vous en avez vraiment besoin car cela ajoute un tout nouveau niveau de complexité.

Une manière courante d'implémenter ceci est de stocker les fichiers dans une base de données en tant que données binaires. Ne vous inquiétez pas si votre base de données devient trop volumineuse si vous utilisez SQL Server. Les champs binaires ne sont pas stockés dans les tables de données elles-mêmes, de sorte qu'elles n'affectent pas les performances. Ce que cela vous permet de faire est de rechercher très rapidement les fichiers auxquels l'utilisateur connecté a accès en utilisant des jointures de base de données rapides. Ensuite, diffuser les données dans un flux de réponse lorsque l'utilisateur demande un fichier particulier (après une autre vérification bien sûr - vous ne pouvez pas être trop prudent).

Questions connexes