写真のホットリンクの問題については、結局のところ、成功するのは自分の作品であり、他人にそう簡単に盗まれることを望まない人も多いでしょう。 おそらくホットリンク動作が多すぎるため、この機能は多くのフォーラムで利用できます。
ASP.NET アプリケーションのライフサイクルに精通している場合は、HttpModule を使用してリクエストをインターセプトし、残りの作業はフィルター処理するだけです。もう一度フィルターしてください!
HttpModule に詳しくない場合は、MSDN のアドレスで詳細を確認してください。ms-help://MS.VSCC.v80/MS.MSDN.v80/MS.VisualStudio.v80。 chs/dv_aspnetcon/html/f1d2910f-61d0-4541-8af8-c3c108ca351f.htm。 1private
void Application_BeginRequest(Object source, EventArgs e)
2{
3 HttpApplication アプリケーション = (HttpApplication)source;
4 HttpContext コンテキスト = application.Context;
5 bool isSafe = true //リンクは合法ですか?
6 文字列 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 ビットマップ画像 = null;
23 グラフィックス g = null;
24 MemoryStream ミリ秒 = null;
25
26 トライ
27 {
28 string picPath = ClassLibrary.RPath.GetFullDirectory("images/unlawful.gif");
29 if (ファイル.存在(picPath))
30 {
31 img = 新しいビットマップ(picPath, false);
32}
33 その他
34 {
35 img = 新しいビットマップ(64, 64);
36 g = グラフィックス.FromImage(img);
37 g.クリア(カラー.ホワイト);
38 Font f = new Font("宋体,黑体,Arial", 9,FontStyle.Bold);
39 SolidBrush s = 新しい SolidBrush(Color.Red);
40 g.DrawString(Resources.Message.LawlessLink, f, s, 1, 20);
41 img.Save(picPath, ImageFormat.Gif);
42 }
43 ミリ秒 = 新しい MemoryStream();
44 img.Save(ms, ImageFormat.Gif);
45 context.Response.ClearContent();
46 context.Response.ContentType = "画像/Gif";
47 context.Response.BinaryWrite(ms.ToArray());
48 context.Response.End();
49 }
50キャッチ
51 { }
52ついに
53 {
54 if(g != null )
55 g.Dispose();
56 img.Dispose();
57 }
58 }
59}
これの最大の欠点は、クライアントからのすべてのリクエストをフィルタリングする必要があり、当然パフォーマンスが低下することです。もっと良い方法や最適化方法を持っている友人がいるかどうかはわかりません。一緒に話し合ってみましょう。
http://www.cnblogs.com/nowind/archive/2007/01/16/622016.html