2014-04-21 4 views
0

Dans IIS, j'ai remarqué que je peux refuser l'accès à n'importe quelle extension de fichier sur le serveur. Par exemple, je refuse l'accès aux images .jpg. Mais alors le navigateur ne pourra pas afficher les images .jpg sur mon site. Je me demandais si IIS nous permettait de refuser l'accès aux extensions de fichiers - ou aux noms de fichiers - auxquels on accède directement (en tapant l'URL complète dans la barre d'adresse), tout en les servant au navigateur si demandé par le document?Refuser les extensions de fichier dans IIS

+1

Je ne pense pas que le serveur web peut vraiment dire si elles sont demandées par un document ou directement. La requête HTTP est la même dans les deux cas. –

Répondre

3

Vous ne pouvez pas vraiment empêcher cela; une personne déterminée peut télécharger tout ce qu'une page Web peut télécharger. Cependant, vous pouvez le rendre légèrement plus difficile pour les moins techniquement instruits en vérifiant le référant HTTP dans la demande. Si c'est l'URL de l'une de vos pages Web, vous pouvez autoriser la demande. Sinon, vous pouvez le nier. Cette technique est utilisée pour empêcher les liens profonds assez souvent.

Voici un échantillon (non testé) de la façon dont vous pouvez le faire avec un module HTTP .NET:

public class ImageDenyingModule : IHttpModule 
{ 
    public void Init(HttpApplication app) 
    { 
     app.BeginRequest += (s, e) => { 
      var request = app.Context.Request; 
      if (RequiresPageReferrer(request.Url) && !IsValidReferer(request.UrlReferrer)) { 
       app.Context.Response.StatusCode = 404; 
       app.Context.Response.End(); // Or something... 
      } 
     }; 
    } 

    private bool RequiresPageReferrer(string url) { 
    } 

    private bool IsValidReferrer(string referrer) { 
    } 
} 
1

Vous pouvez le faire avec un gestionnaire personnalisé http.

http://support.microsoft.com/kb/308001

Si vous créez un gestionnaire personnalisé pour les fichiers jpg, vous pouvez vérifier le referer de la demande et de servir l'image ou annuler la demande.

+0

IMPRESSIONNANT. Merci beaucoup @Gusman! – uSeRnAmEhAhAhAhAhA

Questions connexes