ASP ホットリンク防止は、広告 Web サイトを作成する友人にとって常に悩みの種です。ホットリンクはサーバーや Web サイトの通常の動作に深刻な影響を及ぼします。今日は、ASP ホットリンク防止を実装する方法を見てみましょう。バー。
http://www.xx.com/download/webjx.pdf などの静的ファイルの実際のパスがわかっていて、サーバーが特別な制限を設定していなければ、それを簡単にダウンロードできます。 Web サイトが webjx.pdf のダウンロードを提供する場合、ダウンローダーが実際のパスを取得しないようにするにはどうすればよいでしょうか?この記事では、Aspを使ってファイルの実際のダウンロードパスを非表示にする方法を紹介します。
Web サイトのファイルを管理する場合、同じ拡張子のファイルを同じディレクトリに配置し、それらに特別な名前を付けることができます。たとえば、PDF ファイルのディレクトリは the_pdf_file_s で、次のコードは down.asp およびそのオンライン パスとして保存されます。 http://www.xx.com/down.asp の場合、http://www.xx.com/down.asp?FileName=webjx.pdf を使用してこのファイルをダウンロードできますが、ダウンローダーはこのファイルを認識できません。実際のダウンロードパス! down.asp では、ファイルのダウンロードにログインが必要かどうかを設定したり、ダウンロードされたソース ページが外部 Web サイトであるかどうかを判断したりして、ファイルがリンクされるのを防ぐこともできます。
<% From_url = Cstr(Request.ServerVariables(HTTP_REFERER)) Serv_url = Cstr(Request.ServerVariables(SERVER_NAME)) if Mid(From_url,8,len(Serv_url)) <> Serv_url then response.write 違法リンクです! 「ホットリンクを防止する」 応答.終了 終了する場合 if Request.Cookies(Logined)= then response.redirect /login.asp ''ログインが必要です! 終了する場合 関数 GetFileName(longname)''/folder1/folder2/file.asp=>file.asp while instr(ロングネーム,/) ロングネーム = right(ロングネーム,len(ロングネーム)-1) 曲がります GetFileName = ロングネーム 終了機能 薄暗い流れ ディムコンテンツ ディムファイル名 Dim TrueFileName ディムファイル拡張子 Const adTypeBinary = 1 ファイル名 = Request.QueryString(ファイル名) if ファイル名 = then Response.Write 無効なファイル名です。 応答.終了 次の場合に終了 FileExt = Mid(ファイル名, InStrRev(ファイル名, .) + 1) Case UCase(FileExt) を選択 ケース ASP、ASA、ASPX、ASAX、MDB 応答。不正な操作を書き込みます。 応答.終了 エンドセレクト 応答.クリア lcase(right(FileName,3))=gif または lcase(right(FileName,3))=jpg または lcase(right(FileName,3))=png の場合 Response.ContentType = image/* ''画像ファイルのダウンロード ダイアログ ボックスは表示されません それ以外 Response.ContentType = application/ms-download 終了する場合 Response.AddHeader コンテンツの配置、添付ファイル名 = & GetFileName(Request.QueryString(FileName)) ストリーム = server.createObject(ADODB.Stream) を設定します。 Stream.Type = adTypeBinary ストリーム.オープン if lcase(right(FileName,3))=pdf then ''PDF タイプのファイル ディレクトリを設定します TrueFileName = /the_pdf_file_s/&FileName 終了する場合 if lcase(right(FileName,3))=doc then ''DOC タイプのファイル ディレクトリを設定します TrueFileName = /my_D_O_C_file/&FileName 終了する場合 lcase(right(FileName,3))=gif または lcase(right(FileName,3))=jpg または lcase(right(FileName,3))=png の場合 TrueFileName = /all_images_/&FileName ''画像ファイルのディレクトリを設定します 終了する場合 Stream.LoadFromFile Server.MapPath(TrueFileName) 非ストリーム中.EOS Response.BinaryWrite Stream.Read(1024 * 64) ウェン ストリーム.クローズ ストリーム = なしを設定 レスポンス.フラッシュ 応答.終了 %> |