تتمثل ثغرة الأمن في تحميل ASP التي أسمعها غالبًا في تحميل بعض ملفات طروادة عن طريق تعديل اسم لاحقة (تعديلها إلى لاحقة ملف الصورة) وتحميلها.
لهذا الموقف ، استخدم الوظائف التالية للتمييز:
نسخة الكود كما يلي:
<٪
'**************************************************************************
"يتم استخدام وظيفة CheckFileType للتحقق مما إذا كان الملف ملف صورة
اسم ملف المعلمة هو المسار إلى الملف المحلي
"إذا كان ملف JPEG ، GIF ، BMP ، PNG صورة ، تُرجع الوظيفة بشكل صحيح ، وإلا فإنها تعود خاطئة
'**************************************************************************
constadtypebinary = 1
dimjpg (1): jpg (0) = cbyte (& hff): jpg (1) = cbyte (& hd8)
dimbmp (1): BMP (0) = cbyte (& h42): BMP (1) = cbyte (& h4d)
dimpng (3): png (0) = cbyte (& h89): png (1) = cbyte (& h50): png (2) = cbyte (& h4e): png (3) = cbyte (& h47)
dimgif (5): gif (0) = cbyte (& h47): gif (1) = cbyte (& h49): gif (2) = cbyte (& h46): gif (3) = cbyte (& h39): gif (4) = cbyte (& h38): gif (5) = cbyte (& h61)
FunctionCheckFileType (اسم الملف)
onerrorresumenext
checkFileType = false
dimfstream ، fileext ، ختم ، أنا
filext = mid (اسم الملف ، instrev (اسم الملف ، ".")+1)
setfstream = server.createBject ("adodb.stream")
fstream.Open
fstream.type = adtypebinary
fstream.loadfromfilefilename
fstream.position = 0
seleccaseFileStext
حالة "JPG" ، "JPEG"
ختم = fstream.read (2)
fori = 0to1
IFACB (MIDB (Stamp ، i+1،1)) = jpg (i) wheCheckFileType = trueelseCheckFileType = false
التالي
حالة "GIF"
ختم = fstream.read (6)
fori = 0to5
IFACB (MIDB (Stamp ، i+1،1)) = GIF (i) thercheckfiletype = trueelsecheckfiletype = false
التالي
حالة "PNG"
ختم = fstream.read (4)
fori = 0to3
IFACB (MIDB (Stamp ، i+1،1)) = png (i) wheCheckFileType = trueelseCheckFileType = false
التالي
حالة "BMP"
ختم = fstream.read (2)
fori = 0to1
IFACB (MIDB (Stamp ، i+1،1)) = BMP (i) wheCHECKFILETYPE = TRUEELSECHECKFILETYPE = false
التالي
endselect
fstream.close
setFsetem = لا شيء
iferr.number <> 0ThEckEckFileType = false
الوظيفية
٪>
ثم عند التقديم
نسخة الكود كما يلي: CheckFileType (server.mappath ("cnbruce.jpg"))))
أو
checkfiletype ("f: /web/164/images/cnbruce.jpg")) على أي حال ، فإنه يكتشف نوع ملف الصورة الذي يتحقق
لذلك ، يتم استخدام هذا الموقف في تحميل الصورة. تتمثل الطريقة الحالية أولاً في السماح بتحميل ملف "الصورة الزائفة" ، ثم استخدام الوظيفة المخصصة أعلاه لتحديد ما إذا كان الملف يتوافق مع مواصفات الصورة. إذا كان ملف صورة متخفي طروادة ، فسيقوم FSO بحذفه ، على سبيل المثال:
انسخ الرمز كما يلي: file.saveasserver.mappath (اسم الملف) "حفظ الملف
ifnotcheckfileType (server.mappath (اسم الملف)) ثم