2017-01-23 2 views

Répondre

1

Il existe de nombreuses façons, comment vous pouvez faire "protection hotlink". L'un d'entre eux utilise la règle de réécriture. Il montrera image no_hotlinking_allowed.jpg si quelqu'un va essayer de lier votre image dans un autre site:

<rewrite> 
     <rules> 
      <rule name="Hotlinking protection"> 
       <match url=".*\.(gif|jpg|png)$" /> 
       <conditions> 
        <add input="{HTTP_REFERER}" pattern="^$" negate="true" /> 
        <add input="{HTTP_REFERER}" pattern="^http://(.*\.)?domain\.com/.*$" negate="true" /> 
       </conditions> 
       <action type="Rewrite" url="/images/no_hotlinking_allowed.jpg" /> 
      </rule> 
     </rules> 
    </rewrite> 

Il est de manière universelle, et ce n'est pas lié à ImageResizer

Dans le cas, si tu veux protéger l'accès aux images sans quesrystring filigrane, cette règle conviendra pour vous:

<rule name="Autoadd watermark"> 
       <match url=".*\.(gif|jpg|png)$" /> 
       <conditions> 
        <add input="{QUERY_STRING}" pattern=".*watermark.*" negate="true" /> 

       </conditions> 
       <action type="Rewrite" url="{PATH_INFO}?watermark=watermark" /> 
      </rule> 
+0

Merci. Est-ce une méthode sûre, n'est-ce pas? – Yargicx

+0

Cela fonctionne pour la protection hotlinking (donc, personne ne peut placer votre image sur un autre site). Mais les utilisateurs peuvent toujours prendre des originaux. –

+0

édité ma réponse, fourni les deux solutions –

0

vous pouvez ajouter la règle d'autorisation personnalisée pour ImageResizer il ne servira des images avec des filigranes:

ImageResizer.Configuration.Config.Current.Pipeline.AuthorizeImage += 
    delegate(IHttpModule sender, HttpContext context, IUrlAuthorizationEventArgs e) 
    { 
     // You can also check that you support specific watermark parameter value. 
     if (string.IsNullOrEmpty(context.Request.QueryString["watermark"])) 
     { 
      e.AllowAccess = false; 
     } 
    }; 

Pour plus d'informations, consultez ImageResizer events documentation.