تمتلك العديد من مواقع نغمات الهواتف المحمولة برنامجًا خاصًا بها لمكافحة التسرب، لكن هذا البرنامج مصمم فقط لمنع السادة، وليس اللصوص. دعونا نقدم الوظيفة بإيجاز: يتم استخدام كائن ASP ServerVariables (متغير بيئة الخادم) من خلال متغير البيئة هذا، ويمكن الحصول على عنوان التنزيل الحقيقي ومن ثم يمكن تدمير سلامة العنوان الحقيقي من خلال بعض وظائف VBS البسيطة. تحقيق وظيفة خداع تنزيل البرامج. تم الآن إرفاق كود المصدر ليتعلم منه الجميع.
انسخ رمز الكود كما يلي:
<% وظيفة DownloadFIle(StrFIle)
StrFIlename=StrFIle
Response.Buffer = صحيح
الاستجابة.واضحة
تعيين S=Server.CreateObJect(ADODB.Stream)
س. مفتوح
النوع S = 1
على خطأ في السيرة الذاتية التالي
تعيين Fso=Server.CreateObJect(ScrIptIng.FIleSystemObJect)
إذا لم يكن Fso.FIleExists(StrFIleName) ثم
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 الملف غير موجود أو تم حذفه.
الاستجابة.النهاية
نهاية إذا
Response.RedIrect Request.ServerVarIables(HTTP_REFERER)
الاستجابة.النهاية
نهاية إذا
FileExt=MId(StrFIlename,InStrRev(StrFIleName, .)+1)
حدد الحالة UCase(FIleExt)
حالة ASP، ASA، ASPX، ASAX، MDB، PHP، JSP، SHTML، HTML، HTM، TV، DATA
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 الملف غير موجود أو تم حذفه.
الاستجابة.النهاية
نهاية إذا
Response.RedIrect Request.ServerVarIables(HTTP_REFERER)
الاستجابة.النهاية
إنهاء التحديد
تعيين F=Fso.GetFIle(StrFIlename)
IntFIlelength=F.SIze
s.LoadFromFIle(StrFIlename)
إذا أخطأت ثم
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 بيانات الملف غير كاملة أو تالفة.
الاستجابة.النهاية
نهاية إذا
Response.RedIrect Request.ServerVarIables(HTTP_REFERER)
الاستجابة.النهاية
نهاية إذا
تعيين التحميل = Server.CreateObJect (PersIts.Upload)
إذا كان التحميل لا شيء ثم
Response.AddHeader Content-DIsposItIon,attachment; FIlename=&F.Name
Response.AddHeader Content-Length,IntFilelength
Response.CharSet=UTF-8
Response.ContentType=application/x-download
Response.BinaryWrite S.Read
الاستجابة. فلوش
S. إغلاق
اضبط s=NothIng
آخر
Upload.SendBinary StrFIlename، صحيح، التطبيق/تنزيل x، خطأ
نهاية إذا
وظيفة النهاية
%>
استخدم: <%Call DownloadFIle(DownloadFIle)%>.