Aspでファイルのパスを隠して、防犯チェーンのコードを実現します。
2495 ワード
Aspでファイルのパスを隠して、防犯チェーンを実現します。 静的ファイルの実際のパスを知っているなら、http://www.xx.com/download/51windows.pdfサーバーに特別な制限がないなら、私達はそれをダウンロードしてもいいです。ウェブサイトが51 windows.pdfを提供してダウンロードする時、どのようにようやくダウンロード者に彼の実際的なパスを得ることができません!本論文では、どのようにAspを使用してファイルを隠しているかを紹介します。 私達はウェブサイトのファイルを管理する時、拡張子のようなファイルを同じディレクトリの下に置くことができます。pdf_file_sは、下のコードをdown.aspとして保存し、彼のオンラインパスはhttp://www.xx.com/down.aspはい、使えます。http://www.xx.com/down.asp?FileName=51windows.pdfこのファイルをダウンロードしに来ました。そして、ダウンロード者はこのファイルの実際のダウンロード経路を見ることができません。down.aspではダウンロードファイルの登録が必要かどうかを設定して、ダウンロードのソースページが外部サイトかどうかを判断して、ファイルの盗難を防ぐことができます。例コード:<%From_url = Cstr(Request.ServerVarables)REFERER")Serv_url = Cstr(Request.ServerVarables)NAME")if mid(From_)url,8,len(Serv_)url <> Serv_url thenレスポンス.write "不正リンク!" '盗撮防止チェーン if Request.Coookies(「Logisted」)=「」 thenレスポンス.redirect "/login.asp" 'ログインが必要ですend if Function Get FileName'/folder 1/folder 2/file.asp=>file.asp while instr(longname、“/”)longname = right(longname,len(longname)-1)wend Get FileName = longname End Function Dim Stream Dim Contects Dim FileName Dim TrueFileName Dim FileExt Cost adType Binary = 1 FileName = Request.QueryString(FileName)if FileName = "" The n Resonse.Write "ファイル名が無効ですResonse.End End if FileExt = Mid(FileName) InStrRev(FileName) ".") + 1)セレクト Case UCase(FileExt)Case "ASP" "ASA" "ASPX" "ASAX" "MDB「Resonse.Write」 "不正操作Resonse.End End Select Resonse.Clear if lcase(right(FileName,3)=「gif」 or lcase(right(FileName,3)=「jpg」 or lcase(right(FileName,3)="png" then Resonse.cn tentType = "イメージ/*" '画像ファイルにはダウンロードダイアログが表示されません。 = "appication/ms-download"end if Resonse.Add Header "content-disposition" "atachment; filename=" & Get FileName Set Stream = server.reat Object(「ADODB.Stream」)Stream.Type = adType Binary Stream.Open if lcase(right(FileName,3)=「pdf」 then 'pdfタイプファイルディレクトリTrueFileNameを設定します。 = "/the_pdf_file_s/「&FileName end」 if if lcase(right(FileName,3)=「doc」 then 'DOCタイプファイルディレクトリTrueFileNameを設定します。 = "/my_D_オウ。C_file/“&fileName end” if lcase(right(FileName,3)=「gif」 or lcase(right(FileName,3)=「jpg」 or lcase(right(FileName,3)="png" then True FileName = "/all_イマジネーションFileName '画像ファイルディレクトリendを設定します。 if Stream.LoadFroomFile Server.MapPath(TrueFileName)While Not Stream.EOS Resonse.BinaryWrite Stream.Read(1024) * 64)Wend Stream.C lose Set Stream = Nothing Resonse.Fush Resonse.End%