Предотвращение хотлинков ASP всегда было головной болью для друзей, которые создают рекламные сайты. Горячие ссылки серьезно влияют на нормальную работу серверов и веб-сайтов. Сегодня давайте рассмотрим метод реализации предотвращения хотлинков ASP. . Бар.
Если мы знаем фактический путь к статическому файлу, например: http://www.xx.com/download/webjx.pdf, и если сервер не устанавливает никаких особых ограничений, мы можем загрузить его без особых усилий! Когда веб-сайт обеспечивает загрузку файла webjx.pdf, как мы можем помешать загрузчику получить фактический путь? В этой статье рассказывается, как использовать Asp, чтобы скрыть фактический путь загрузки файлов.
Когда мы управляем файлами веб-сайта, мы можем поместить файлы с одинаковым расширением в один и тот же каталог и дать им специальное имя. Например, каталог, в котором размещаются файлы PDF, — это the_pdf_file_s, а следующий код сохраняется как down.asp: и его онлайн-путь — http://www.xx.com/down.asp, мы можем использовать http://www.xx.com/down.asp?FileName=webjx.pdf для загрузки этого файла и загрузчика. не могу увидеть этот файл Фактический путь загрузки! В down.asp мы также можем указать, требует ли загрузка файлов входа в систему, и определить, является ли загруженная исходная страница внешним веб-сайтом, тем самым предотвращая связывание файлов.
<% From_url = Cstr(Request.ServerVariables(HTTP_REFERER)) Serv_url = Cstr(Request.ServerVariables(SERVER_NAME)) если Mid(From_url,8,len(Serv_url)) <> Serv_url, то response.write Незаконная ссылка! ''Предотвратить хотлинкинг ответ.конец конец, если если Request.Cookies(Logined)= тогда response.redirect /login.asp ''Требуется вход в систему! конец, если Функция GetFileName(длинное имя)''/folder1/folder2/file.asp=>file.asp в то время как instr(длинное имя,/) длинное имя = правильно (длинное имя, len (длинное имя)-1) идти GetFileName = длинное имя Конечная функция Тусклый поток Тусклое содержимое Тусклое имя файла Дим TrueFileName Тусклый файлExt Конст адтипебинарный = 1 ИмяФайла = Request.QueryString(ИмяФайла) если ИмяФайла = Тогда Ответ.Запись Неверное имя файла! Ответ.Конец Конец, если 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 = приложение/мс-загрузка конец, если 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/&ИмяФайла конец, если если lcase(right(FileName,3))=gif или lcase(right(FileName,3))=jpg или lcase(right(FileName,3))=png, то TrueFileName = /all_images_/&FileName ''Установить каталог файла изображения конец, если Stream.LoadFromFile Server.MapPath(TrueFileName) Пока не Stream.EOS Response.BinaryWrite Stream.Read(1024 * 64) Венд Поток.Закрыть Установить поток = ничего Ответ.Flush Ответ.Конец %> |