仓酷云

标题: ASP.NET教程之实例代码:图片、文件防盗链程序 [打印本页]

作者: 小女巫    时间: 2015-1-16 22:49
标题: ASP.NET教程之实例代码:图片、文件防盗链程序
可怜的程序员,还是逃不出移植的命运!程序|防盗链  关于图片盗链这个成绩,究竟是本人的休息乐成,良多人不但愿他人就那末容易地偷走了。这个功效在良多的论坛上都具有,多是由于盗链的举动太多了吧
  反盗链的程序实在很复杂,熟习ASP.NET使用程序性命周期的话很简单就能够写一个,使用HttpModule在BeginRequest事务中拦阻哀求就ok了,剩下的事情就是过滤,再过滤!
  假如不熟习HttpModule的话,能够往MSDN上查阅,先容十分具体,地点:ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80.chs/dv_aspnetcon/html/f1d2910f-61d0-4541-8af8-c3c108ca351f.htm。这里就不空话了
1privatevoidApplication_BeginRequest(Objectsource,EventArgse)
2{
3HttpApplicationapplication=(HttpApplication)source;
4HttpContextcontext=application.Context;
5boolisSafe=true;//是不是正当链接
6stringuri=context.Request.Url.AbsolutePath.ToLower();
7if(uri.LastIndexOf(".")>0&&context.Request.UrlReferrer!=null)
8{
9stringexp=uri.Substring(uri.LastIndexOf("."));
10//这里是判别文件后缀名是不是在扫除的文件范例列表以内
11boolisHas=ClassLibrary.RData.RString.StrIsIncUseSC(exp,config.ImgSafeType.Split(|));
12if(isHas)
13{
14stringdomainOutter=context.Request.UrlReferrer.Authority.ToLower();//包括域名和端口
15ArrayListarry=Common.Cache.GetDomainValid();//取体系界说的正当的域名绑定列表
16isSafe=arry.Contains(domainOutter);//判别以后哀求的域名是不是在正当列表以内
17}
18}
19//上面就是分歧法的时分的输入了,假如有默许替换图片则输入,假如没有就天生一个,格局为.gif
20if(!isSafe)
21{
22Bitmapimg=null;
23Graphicsg=null;
24MemoryStreamms=null;
25
26try
27{
28stringpicPath=ClassLibrary.RPath.GetFullDirectory("images/unlawful.gif");
29if(File.Exists(picPath))
30{
31img=newBitmap(picPath,false);
32}
33else
34{
35img=newBitmap(64,64);
36g=Graphics.FromImage(img);
37g.Clear(Color.White);
38Fontf=newFont("宋体,黑体,Arial",9,FontStyle.Bold);
39SolidBrushs=newSolidBrush(Color.Red);
40g.DrawString(Resources.Message.LawlessLink,f,s,1,20);
41img.Save(picPath,ImageFormat.Gif);
42}
43ms=newMemoryStream();
44img.Save(ms,ImageFormat.Gif);
45context.Response.ClearContent();
46context.Response.ContentType="image/Gif";
47context.Response.BinaryWrite(ms.ToArray());
48context.Response.End();
49}
50catch
51{}
52finally
53{
54if(g!=null)
55g.Dispose();
56img.Dispose();
57}
58}
59}
  凡有利必无害,如许做最年夜的弱点就是增添了体系开支,客户真个每哀求都要过滤一遍,功能天然要打扣头了。不晓得哪位伴侣有更好的举措,大概优化的办法,一同来切磋切磋。
据说很厉害,甚至可以把C#也干掉^_^,不过也很复杂,本来C++已经够复杂的。有人甚至还提出把这个东东引进标准,我觉得基本上不可能的。
作者: 飘灵儿    时间: 2015-1-20 05:15
主流网站开发语言之JSP:JSP和Servlet要放在一起讲,是因为它们都是Sun公司的J2EE(Java2platformEnterpriseEdition)应用体系中的一部分。
作者: 若天明    时间: 2015-1-28 17:32
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
作者: 活着的死人    时间: 2015-2-5 22:20
Asp.net脚本的出现,为ASP空间带来了更高的稳定性,同时也为程序员建站提供更高环境!
作者: 第二个灵魂    时间: 2015-2-13 22:44
大哥拜托,Java在95年就出来了,微软垄断个妹啊,服务器市场微软完全是后后来者,当年都是Unix的市场,现在被WindowsServer和Linux抢下大片,包括数据库也一样。
作者: 乐观    时间: 2015-3-4 02:35
现在主流的网站开发语言无外乎asp、php、asp.net、jsp等。
作者: 分手快乐    时间: 2015-3-11 15:30
ASP.net1.1和2.0在程序上的语法也有很大不同,现在2.0属于新出来的,不知道半年后会不会有3.0(说笑一下)。Windows2003系统自动支持ASP和ASP.net环境,不用安装任何程序。Asp.net属于编译语言。ASP的最大不同(ASP属于解释语言)。
作者: 老尸    时间: 2015-3-19 01:23
可以通过在现有ASP应用程序中逐渐添加ASP.NET功能,随时增强ASP应用程序的功能。ASP.NET是一个已编译的、基于.NET的环境,可以用任何与.NET兼容的语言(包括VisualBasic.NET、C#和JScript.NET.)创作应用程序。另外,任何ASP.NET应用程序都可以使用整个.NETFramework。开发人员可以方便地获得这些技术的优点,其中包括托管的公共语言运行库环境、类型安全、继承等等。
作者: 小魔女    时间: 2015-3-27 01:08
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2