Уязвимость загрузки ASP, которую я часто слышу, состоит в том, чтобы загрузить некоторые троянские файлы, изменяя имя суффикса (изменяя его на суффикс файла изображения) и загрузив их.
Для этой ситуации используйте следующие функции, чтобы отличить:
Кода -копия выглядит следующим образом:
<%
'*******************************************************
'FeckfileType Функция используется для проверки, является ли файл файлом изображения
«Имя файла параметров - это путь к локальному файлу
'Если это файл jpeg, gif, bmp, png picture, функция возвращает true, в противном случае он возвращает ложь
'*******************************************************
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, Stamp, i
FileExt = mid (имя файла, instrrev (filename, ".")+1)
setfstream = server.createObject ("adodb.stream")
fstream.open
fstream.type = adtypebinary
fstream.loadfromfilefilename
fstream.position = 0
SelectCaseFileext
Дело "JPG", JPEG "
Stamp = fstream.read (2)
fori = 0to1
ifacb (midb (stamp, i+1,1)) = jpg (i) theckfiletype = trueElseCheckfileType = false
следующий
дело "GIF"
Stamp = fstream.read (6)
fori = 0to5
ifacb (midb (stamp, i+1,1)) = gif (i) theCeckfileType = trueElseCheckfileType = false
следующий
дело "Png"
Stamp = fstream.read (4)
fori = 0to3
ifacb (midb (stamp, i+1,1)) = png (i) theckfiletype = trueElseCheckfileType = false
следующий
дело "BMP"
Stamp = fstream.read (2)
fori = 0to1
ifacb (midb (stamp, i+1,1)) = bmp (i) theckfiletype = trueElseCheckfileType = false
следующий
endselect
fstream.close
setFsetem = ничего
iferr.number <> 0thencheckfiletype = false
конечная функция
%>
Затем при подаче
Копия кода выглядит следующим образом: CheckFileType (server.mappath ("cnbruce.jpg"))))))
или
CheckFileType ("f: /web/164/images/cnbruce.jpg")) В любом случае, он должен обнаружить тип файла изображения, который проверяет локальный физический адрес, и возвращает True или False Value
Следовательно, эта ситуация используется в загрузке изображения. Текущий метод должен сначала разрешить загрузку файла «псевдо-изображения», а затем использовать вышеупомянутую пользовательскую функцию, чтобы определить, соответствует ли файл со спецификациями изображения. Если это троян, замаскированный файл изображения, FSO удалит его, например:
Скопируйте код следующим образом: file.saveasserver.mappath (filename) 'Сохраните файл
Ifnotcheckfiletype (server.mappath (имя файла))