J'ai un scénario dans lequel je ne suis pas sûr que mon approche soit la meilleure, et j'apprécierais vos commentaires/suggestions.Quelles sont les stratégies pour protéger les ressources Web en fonction de la logique métier?
scénario: J'ai un tas de 'modules' basés sur le flash (swf) qui sont hébergés dans mon application aspnet. Chaque flash a son propre répertoire sur le système de fichiers, qui contient des éléments pour le flash. Considérez cette structure du site simplifié:
/webapp/index.aspx
/webapp/flash/flash1/flash.swf
/webapp/flash/flash1/someimage.jpg
/webapp/flash/flash1/someclip.mp3
/webapp/flash/flash2/flash.swf
/webapp/flash/flash2/someimage.jpg
/webapp/flash/flash2/someclip.mp3
etcetera
où la convention de nommage est /webapp/flash/flash [ID]/
Je veux mettre en place un mécanisme de sécurité qui vérifie si l'utilisateur doit être autorisé à accéder * aux fichiers dans le sous-dossier « [ID ] 'et c'est son contenu.
** logique métier d'insertion en fonction des informations stockées dans une base de données SQL ici *
Je considérais écrire un HttpModule qui fait quelque chose comme
ProcessRequest(){
if(Request.RawUrl.Contains("/webapp/flash") && !userHasValidLicenseForModule(1)){
Redirect("login.aspx");
}
}
Mais il y a l'inconvénient que HttpModule ne fonctionne que pour le fichier extension qui sont mappés à aspnet (dans IIS6). Cela signifie que je devrais cartographier toutes les extensions possibles de ce processus (.mp3, .jpg etc), ce que je préfère éviter.
Je pensais également utiliser un HttpHandler à la place, mais le fichier flash doit être capable de lier ses ressources en utilisant des URL relatives. (donc un modèle semblable à un proxy comme /webapp/getprotectedstuff.ashx?file=flash1234/flash.swf n'est pas préféré)
Il est peut-être plus judicieux de stocker complètement les fichiers Flash et les ressources externes. Il y a peut-être d'autres stratégies auxquelles je n'ai pas pensé.
Utilisez la sécurité aspnet et rédigez un fournisseur d'appartenances personnalisé?
Des pensées?