2017-01-23 3 views

Antwort

1

Es gibt viele Möglichkeiten, wie Sie "Hotlink-Schutz" tun können. Eine davon verwendet die Umschreibregel. Es wird no_hotlinking_allowed.jpg Bild zeigen, wenn jemand versucht, das Bild in einer anderen Website zu verlinken:

<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> 

es universell ist, und es ist nicht ImageResizer

Bei Zusammenhang, wenn u Zugriff schützen will um Bilder ohne Wasserzeichen quesrystring, wird diese Regel für die zu Ihnen passen:

<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

Vielen Dank. Ist es eine sichere Methode, nicht wahr? – Yargicx

+0

Es funktioniert für den Hotlink-Schutz (so kann niemand Ihr Bild auf anderen Websites platzieren). Aber Benutzer können immer noch Originale nehmen. –

+0

bearbeitet meine Antwort, beide Lösungen –

0

Sie benutzerdefinierte Berechtigungsregel ImageResizer hinzufügen können, so dass es nur Bilder mit Wasserzeichen dienen:

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; 
     } 
    }; 

Für weitere Informationen überprüfen Sie ImageResizer events documentation.