我为ASP.NET使用了imageresizer,当我得到照片时,我就把我们的品牌放在上面。但我怎样才能保护原画。例如:
<img src="http://www.domain.com/mypic.jpg?width=400&watermark=mywatermark" />但是一个人可以从http://www.domain.com/mypic.jpg拍下我原来的照片,我该如何保护它呢?
谢谢。
发布于 2017-01-23 10:09:10
有很多种方法,你可以如何做“热链接保护”。其中之一是使用重写规则。如果有人试图将您的图片链接到另一个网站,它将显示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>它是一种通用的方法,与图像采集器无关。
如果您想保护对图像的访问而不使用水印问题字符串,则此规则将适合您:
<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>发布于 2017-01-23 11:16:20
您可以向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 事件文档。
https://stackoverflow.com/questions/41803657
复制相似问题