C# 图片防盗链怎么做啊?
现在我的网站上的图片已被很多人调用了.怎么样才可以防盗链啊.要求:1.不可以改图片的目录.
2.不能改IIS设置.
3.不用什么CSS技术隐藏图片实际地址.因为地址他们已知道了.
请高手指点下啊
--------------------编程问答-------------------- 我也想知道。 --------------------编程问答-------------------- 确实,不用像楼主所说的那三点。
这个时候需要对httphandler编程,分析传入的请求是否来自于你的网站就可以了,很容易实现的。
请楼主参考htthandler编程的实例,很好找的,讲这个技术的时候都是用这个功能来做实例。 --------------------编程问答-------------------- 楼上说的有道理! 支持 --------------------编程问答-------------------- Http Handler 介绍
http://www.tracefact.net/Asp-Net-Architecture/Introduction-to-Http-Handler.aspx --------------------编程问答-------------------- 用htthandler 不用改动IIS吧.因为是虚拟空间,所以什么都改不了的. --------------------编程问答-------------------- C# 图片防盗链怎么做,这里有介绍的。
http://blog.csdn.net/farawayplace613/archive/2008/10/22/3126456.aspx --------------------编程问答-------------------- 网上有例子的!! --------------------编程问答-------------------- 最简单的是判断Referer,这不是万全之策,因为有些网站可能会先取得你的URL,然后HTTP加Referer头发送请求。
不过大部分网站应该都能防到,相信这是最省钱省事的做法了! --------------------编程问答-------------------- 要是我就不防盗链,直接在图片上加上我的网址,呵呵! --------------------编程问答-------------------- 弄个水印,帮你宣传 --------------------编程问答-------------------- 图片上贴个芙蓉姐姐 --------------------编程问答--------------------
哈哈..就这样办 --------------------编程问答-------------------- 学习! --------------------编程问答-------------------- 学习加帮顶!!!
--------------------编程问答-------------------- 现在通常的做法是使用HttpHandler加水印
周公的Blog里有
http://blog.csdn.net/zhoufoxcn/archive/2008/01/10/2033530.aspx --------------------编程问答-------------------- 关注 --------------------编程问答-------------------- 图片还是用上水印,这样完全可以确定图片是否来自你的网站 --------------------编程问答--------------------
支持 --------------------编程问答-------------------- 确实,不用像楼主所说的那三点。
这个时候需要对httphandler编程,分析传入的请求是否来自于你的网站就可以了,很容易实现的。
请楼主参考htthandler编程的实例,很好找的,讲这个技术的时候都是用这个功能来做实例。 --------------------编程问答-------------------- htthandler 应该不能解决问题吧
iis不会把jpg后缀名的地址交给aspnet_isapi.dll处理的
如果是vs调试的话可能成功
但是如果在iis上发布的话可能就不起作用 --------------------编程问答-------------------- 个人还是觉得加水印好。要是防盗链,最简单的就是判断是否是从你的网站访问的详细页,并且在访问的时候加个session什么的。大概原理就是把外来网站的请求都屏蔽掉~~大概是吧,本人还是菜鸟,不对的请见谅 --------------------编程问答--------------------
--------------------编程问答-------------------- LS的Code可以实现 --------------------编程问答-------------------- 学习一下! --------------------编程问答-------------------- 好帖,顶一下!! --------------------编程问答-------------------- 学习 --------------------编程问答-------------------- 你加密吧 --------------------编程问答-------------------- up --------------------编程问答-------------------- 帮顶 --------------------编程问答-------------------- 唉,还是没有解决办法
//1 写一个继承自IHttpHandler的类,并生成DLL;
using System;
using System.Web;
using System.Collections.Generic;
using System.Text;
namespace ImgProtect
{
public class ImgProtectHadler:IHttpHandler
{
public bool IsReusable
{
get
{
return true;
}
}
public void ProcessRequest(HttpContext context)
{
string path = context.Request.PhysicalPath;
string serverHost = context.Request.Url.Host;
Uri u = context.Request.UrlReferrer;
if (u == null || u.Host.ToLower() != serverHost.ToLower())
{
context.Response.WriteFile("~/Forbidden.gif");
}
else
{
context.Response.WriteFile(path);
}
}
}
}
//2 在网站中引用 该DLL;
//3 在Web.config中加入
<httpHandlers>
<add verb="*" path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" type="ImgProtect.ImgProtectHadler"/>
</httpHandlers>
就象是太平洋电脑网的那种.你可以看到他的图片,但就是在网站上不能调用.
有没有高手来讲解一下啊 --------------------编程问答-------------------- 防盗链一般自己的服务器好做
iis解析的时候都交给一个程序处理就行了
想楼主这样的要求不好说
我觉得水印是最好的办法了
htthandler应该实现不了
用vs调试的时候是可以的
但是用 iis就不行了 --------------------编程问答-------------------- 那你也只有加水印 来完成了 --------------------编程问答-------------------- Mark。 --------------------编程问答-------------------- 看来是没办法解决了 --------------------编程问答-------------------- 周公 强帖 留名... --------------------编程问答--------------------
同意 ,免费帮你做广告 --------------------编程问答-------------------- 加水印不错 --------------------编程问答-------------------- 强大的周公 --------------------编程问答-------------------- 使用httpHandle来实现,对图片文件的请求做专门的处理
第一步:创建一个类,继承自IHttpHandler,代码如下
using System;
using System.Web;
namespace CustomHandler{
public class JpgHandler : IHttpHandler{
public void ProcessRequest(HttpContext context){
// 获取文件服务器端物理路径
string FileName = context.Server.MapPath(context.Request.FilePath);
// 如果UrlReferrer为空,则显示一张默认的禁止盗链的图片
if (context.Request.UrlReferrer.Host == null){
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("/error.jpg");
}else{
// 如果 UrlReferrer中不包含自己站点主机域名,则显示一张默认的禁止盗链的图片
if (context.Request.UrlReferrer.Host.IndexOf("yourdomain.com") > 0){
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile(FileName);
}else{
context.Response.ContentType = "image/JPEG";
context.Response.WriteFile("/error.jpg");
}
}
}
public bool IsReusable{
get{ return true; }
}
}
}
第二步:编译成DLL
csc /t:library CustomHandler.cs
第三步:添加编译好的DLL引用到当前站点的bin文件夹下
第四步:在Web.Config 中注册这个Handler
<system.web>
<httpHandlers>
<add path="*.jpg,*.jpeg,*.gif,*.png,*.bmp" verb="*" type="CustomHandler.JpgHandler,CustomHandler" />
</httpHandlers>
</system.web>
//verb指的是请求此文件的方式,可以是post或get,用*代表所有访问方式。CustomHandler.JpgHandler表示命名空间和类名,CustomHandler表示程序集名。
--------------------编程问答-------------------- 楼上的用httphandler就可以,支持图片加水印 --------------------编程问答-------------------- 不知道能不能回答,两年了
可以把图片地址写成这样
/image.aspx?imgId=1
这样可以不用改配置,做和HttpHandler一样的功能 --------------------编程问答-------------------- 加个水印不就可以了吗? --------------------编程问答-------------------- 加水印。。。 --------------------编程问答-------------------- 关注ing --------------------编程问答-------------------- 好贴,学习了 --------------------编程问答-------------------- 学习一下。 --------------------编程问答-------------------- 禁止复印粘贴。 --------------------编程问答--------------------
哈哈..就这样办
--------------------编程问答-------------------- ISAPI rewrite中文手册2008-08-26 12:51我们在进行网站搜索引擎优化(SEO)或在服务器进行防盗链设置的时候,
可能会用到ISAPI rewrite,下面是ISAPI rewrite的手册,翻译成中文。
.....
假设我们在http://www.mysite.com/下有些页面有一些内联 GIF图片很好,他人可以不直接协商通过盗链到他们的页面上,我们不喜欢这样因为加大了服务器流量
当我们不能100%保护图片,我们至少可以在浏览器发送一个HTTP Referer header的地方限制这种情况
[ISAPI_Rewrite]
RewriteCond Host: (.+)
RewriteCond Referer: (?!http://\1.*).*
RewriteRule .*\.(?:gif|jpg|png) /block.gif [I,O] --------------------编程问答-------------------- 学习!!!!!!!!!!! --------------------编程问答-------------------- 不链接到实际图片,通过一个页面判断请求页面的域。如果不对就不给他 --------------------编程问答-------------------- 将图片通过自定义组件显示,组件中图片不能下载就可以
补充:.NET技术 , C#