如何保护自己网站上的图片!

getnetrmb 2008-05-22 12:09:22
我想问的问题是这样的!

比如,我在自己的网站上写了一篇文章,是图文并茂的文章;

如果被别人看到了,那么,别人就会把我的文章复制粘贴到其他网站里面,存在一种所谓的侵权行为;

我想实现的意图是:防止别人复制粘贴是不可能的了,这也没有必要,但是,有没有一种方法,即,别人通过复制粘贴过去之后,从别人的网站打开我的文章,里面引用到我网站的图片,这个时候,能不能加以限制,让图片显示不出来;

即,只有我网站的域名,才能打开文章中引用到的图片,而其他网站打开的,引用到我网站的图片,无法显示出来?

请高手教我!
...全文
1139 50 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
50 条回复
切换为时间正序
请发表友善的回复…
发表回复
了無痕 2008-05-29
  • 打赏
  • 举报
回复
private void Application_BeginRequest(Object source, EventArgs e)
2{
3 HttpApplication application = (HttpApplication)source;
4 HttpContext context = application.Context;
5 bool isSafe = true; //是否合法链接
6 string uri = context.Request.Url.AbsolutePath.ToLower();
7 if (uri.LastIndexOf(".") > 0 && context.Request.UrlReferrer != null)
8 {
9 string exp = uri.Substring(uri.LastIndexOf("."));
10 //这里是判断文件后缀名是否在排除的文件类型列表之内
11 bool isHas = ClassLibrary.RData.RString.StrIsIncUseSC(exp, config.ImgSafeType.Split('|'));
12 if (isHas)
13 {
14 string domainOutter = context.Request.UrlReferrer.Authority.ToLower(); //包含域名和端口
15 ArrayList arry = Common.Cache.GetDomainValid();//取系统定义的合法的域名绑定列表
16 isSafe = arry.Contains(domainOutter); //判断当前请求的域名是否在合法列表之内
17 }
18 }
19 //下面就是不合法的时候的输出了,如果有默认替代图片则输出,如果没有就生成一个,格式为.gif
20 if (!isSafe)
21 {
22 Bitmap img = null;
23 Graphics g = null;
24 MemoryStream ms = null;
25
26 try
27 {
28 string picPath = ClassLibrary.RPath.GetFullDirectory("images/unlawful.gif");
29 if (File.Exists(picPath))
30 {
31 img = new Bitmap(picPath, false);
32 }
33 else
34 {
35 img = new Bitmap(64, 64);
36 g = Graphics.FromImage(img);
37 g.Clear(Color.White);
38 Font f = new Font("宋体,黑体,Arial", 9,FontStyle.Bold);
39 SolidBrush s = new SolidBrush(Color.Red);
40 g.DrawString(Resources.Message.LawlessLink, f, s, 1, 20);
41 img.Save(picPath, ImageFormat.Gif);
42 }
43 ms = new MemoryStream();
44 img.Save(ms, ImageFormat.Gif);
45 context.Response.ClearContent();
46 context.Response.ContentType = "image/Gif";
47 context.Response.BinaryWrite(ms.ToArray());
48 context.Response.End();
49 }
50 catch
51 { }
52 finally
53 {
54 if(g != null )
55 g.Dispose();
56 img.Dispose();
57 }
58 }
59}


了無痕 2008-05-29
  • 打赏
  • 举报
回复
没有必要控制图片吧,防止复制就好了
jingkunli 2008-05-26
  • 打赏
  • 举报
回复
不太现实!
stray2010 2008-05-23
  • 打赏
  • 举报
回复
关闭服务器.
财富实验室 2008-05-23
  • 打赏
  • 举报
回复
httphandler or httpmodule
ding_ys 2008-05-23
  • 打赏
  • 举报
回复
怎么防啊?截图也可以 搞到呀。
fatimah 2008-05-23
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 sp1234 的回复:]
如果别人诚心盗取你的图文,其复制品在显示时不会再访问你的网站了。除非这个“别人”只是一时玩玩,并不认为你的图文有长期保留价值,才会保留其中必须访问你的网站的资料。

所以还是不要在这个问题上太费脑筋吧。
[/Quote]
有道理,真是诚心要转的人,图片怎样也能搞下来的,不用那么费劲了
qinqinhao 2008-05-23
  • 打赏
  • 举报
回复
mark
wangyunfei921 2008-05-23
  • 打赏
  • 举报
回复
求证中......
tgl10 2008-05-23
  • 打赏
  • 举报
回复
基于这种理念的技术也很多
tgl10 2008-05-23
  • 打赏
  • 举报
回复
不要看得那么绝对,我们就是防君子不防小人的
datahandler2 2008-05-22
  • 打赏
  • 举报
回复
找找类似网易的防图片盗链看看。好像和这个非常向。具体没做过。
getnetrmb 2008-05-22
  • 打赏
  • 举报
回复
加水印,好像没有必要了,因为我已在我的图片上,显示网站域名洛!
pcb_ghl 2008-05-22
  • 打赏
  • 举报
回复
你可以在上传图片的时候给图片加水印啊.没有必要让图片只在你的网站显示吧.
xinghongyang 2008-05-22
  • 打赏
  • 举报
回复
[Quote=引用 21 楼 netfeel2008 的回复:]
没有必要吧
就算是都实现了
也有截屏软件可以截取您的图片
人家再上传到自己的空间
照样能够使用呀。。。。。。
[/Quote]
周公 2008-05-22
  • 打赏
  • 举报
回复
《IHttpHandler的妙用(1):给图片添加水印》
上面这些图片大家不熟悉,不过如果大家留心一下就会发现每张图片上都有一些有关网站的信息,只不过第一张和第二张使用的是图片,第三张就是"life.netskycn.com"文字而已,这就是所谓的图片水印技术,它一般都是在原有图片上添加一些自己的标记(一般是网站网址),这样如果别的网站直接链接使用的话,则不可避免带上了自己网站的信息,相当于给自己网站做了广告。

最近本人也做了一个asp.net网站,做一个政府网站,网站管理人员发现以前很多新闻记者不打招呼就直接使用他们的新闻信息和图片,他们很恼火,于是要求我给他们的网站添加上水印,这样如果别人要用只能通过正式渠道来向他们索取而不是从网站上把图片存下来。

一般的做法是在上传图片时直接给图片添加上水印,由于我在项目中使用了FCKeditor,在上传时不易控制,同时对方还要求他们自己用时不能有水印,于是我就使用了在图片显示时动态添加水印的办法,另外,为了提高效率,还使用了缓存技术,这样不必每次都添加水印,节省时间和提高性能。

本文中使用到的类是IHttpHandler(准确地说是一个接口),msdn对它的定义是:“定义 ASP.NET 为使用自定义 HTTP 处理程序同步处理 HTTP Web 请求而实现的协定。”HTTP处理程序是实现了System.Web.IHttpHandler接口的.NET组件,任何实现了IHttpHandler接口的类都可以用于处理输入的HTTP请求。也就是每次我们请求asp.net网站上的资源,都会由这个请求处理,这样就好控制了。

我的做法是,实现IHttpHandler接口,由实现这个接口的ImageHandler类专门处理对图片资源的请求,第一次请求某个图片时,由于缓存中没有,就读取这个图片,添加上我们指定的水印(由web.config设置指定),然后把输出到客户端,同时也把它缓存一定时间,在缓存期内就再次请求这个图片就不用添加水印了,直接把缓存中的图片输出就行了。

全文地址:http://blog.csdn.net/zhoufoxcn/archive/2008/01/10/2033530.aspx
lingrain 2008-05-22
  • 打赏
  • 举报
回复
徒劳的。如果别人的能看到,你能防止屏幕打印吗?你能防止数码相机拍照吗?
jl_lsj 2008-05-22
  • 打赏
  • 举报
回复
不知道效率如何?
学习了~
huozhao 2008-05-22
  • 打赏
  • 举报
回复
28楼的真够强大的。
大飞飞虫 2008-05-22
  • 打赏
  • 举报
回复
图片用流显示出来,就和现在比较流行的 安全验证码一样, 这样在处理流输出显示的时候,发现不是你的域请求的就不显示, 网易这么干的.
加载更多回复(30)

62,244

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧