2017-01-23 3 views
0

Я использую imageresizer для ASP.NET. Я ставил наш бренд, когда я фотографирую. Но как я могу защитить оригинальную картинку. Например:Защитить изображения с помощью Image Resizer ASP.NET MVC

<img src="http://www.domain.com/mypic.jpg?width=400&watermark=mywatermark" /> 

Но человек может взять мою оригинальную картину из http://www.domain.com/mypic.jpg Как я могу защитить его?

спасибо.

ответ

1

Есть много способов, как вы можете «защитить хотлинк». Одно из них - использование правила перезаписи. Он покажет no_hotlinking_allowed.jpg изображение, если кто-то попытается связать изображение на другом сайте:

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

Это является универсальным способом, и это не связано с ImageResizer

В случае, если и хотят, чтобы защитить доступ к изображениям без водяного знака quesrystring, это правило подходит для вас:

<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

спасибо. Это безопасный метод, не так ли? – Yargicx

+0

Он работает для защиты hotlinking (так что никто не может разместить ваше изображение на других веб-сайтах). Но пользователи по-прежнему могут брать оригиналы. –

+0

отредактировал мой ответ, при условии, что оба решения –

0

Вы можете добавить пользовательские правила авторизации ImageResizer так что это будет только служить изображения с водяными знаками:

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

Для получения дополнительной информации проверьте ImageResizer events documentation.

Смежные вопросы