La vulnerabilidad de carga ASP que a menudo escucho es cargar algunos archivos troyanos modificando el nombre del sufijo (modificándolo al sufijo de archivo de imagen) y cargarlos.
Para esta situación, use las siguientes funciones para distinguir:
La copia del código es la siguiente:
<%
'******************************************************************************************
'CheckFileType La función se usa para verificar si el archivo es un archivo de imagen
'El nombre de archivo del parámetro es la ruta al archivo local
'Si es un archivo jpeg, gif, bmp, png imagen, la función devuelve verdadero, de lo contrario devuelve falso
'******************************************************************************************
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 (nombre de archivo)
onerrorResumEnext
CheckFileType = falso
dimfstream, fileext, sello, i
fileext = mid (nombre de archivo, instrrev (nombre de archivo ".")+1)
setfstream = server.createObject ("ADODB.Stream")
fstream.
fstream.type = adtypeBinary
fstream.loadFromFileFileName
fstream.position = 0
seleccionarfileext
Caso "JPG", "JPEG"
sello = fstream.read (2)
fori = 0to1
IFACB (MIDB (sello, i+1,1)) = jpg (i) thencheckfiletype = trueSelSeCheckFiletype = falso
próximo
Caso "GIF"
sello = fstream.read (6)
fori = 0to5
IFACB (MIDB (sello, i+1,1)) = gif (i) thedeckfiletype = trueSeLeCheckFiletype = falso
próximo
Caso "PNG"
sello = fstream.read (4)
fori = 0to3
IFACB (MidB (sello, i+1,1)) = Png (i) thencheckFiletype = trueSelSeCheckFiletype = falso
próximo
Caso "BMP"
sello = fstream.read (2)
fori = 0to1
IFACB (MidB (sello, i+1,1)) = Bmp (i) thencheckfiletype = trueSelSeCheckFiletype = falso
próximo
EndSelectar
fstream.close
setfsetem = nada
iferr.number <> 0thencheckFiletype = falso
Función final
%>
Luego al aplicar
La copia del código es la siguiente: checkFileType (server.mappath ("cnbruce.jpg"))
o
CheckFileType ("f: /web/164/images/cnbruce.jpg")) De todos modos, es para detectar el tipo de archivo de imagen que verifica la dirección física local y devuelve un valor verdadero o falso
Por lo tanto, esta situación se usa en la carga de imágenes. El método actual es permitir primero la carga del archivo "pseudo-imagen", y luego usar la función personalizada anterior para determinar si el archivo cumple con las especificaciones de imagen. Si es un archivo de imagen disfrazado de troyano, FSO lo eliminará, por ejemplo:
Copie el código de la siguiente manera: file.saveasserver.mappath (nombre de archivo) 'Guardar el archivo
Ifnotcheckfiletype (server.mappath (nombre de archivo)) luego