A vulnerabilidade de upload do ASP que muitas vezes ouço é fazer upload de alguns arquivos de Trojan modificando o nome do sufixo (modificando -o para o sufixo de arquivo de imagem) e enviá -los.
Para esta situação, use as seguintes funções para distinguir:
A cópia do código é a seguinte:
<%
'*************************************************
'CheckFileType Função é usada para verificar se o arquivo é um arquivo de imagem
'O nome do parâmetro é o caminho para o arquivo local
'Se for um arquivo jpeg, gif, bmp, png png, a função retorna true, caso contrário, retorna falsa
'*************************************************
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) = cby (4)
FunctionCheckFileType (nome do arquivo)
OnErrorReSumenext
CheckFileType = false
dimfstream, fileext, carimbo, i
FILEEXT = MID (nome do arquivo, Instrrev (nome do arquivo, ".")+1)
setfstream = server.createObject ("adodb.stream")
fStream.open
fStream.Type = adTypeBinary
fStream.LoadFromFileFilename
fStream.Position = 0
SelectCaseFileExt
caso "jpg", "jpeg"
carimbo = fStream.read (2)
fori = 0to1
ifacb (midb (carimbo, i+1,1)) = jpg (i) thencheckFiletype = tredelElECheckFileType = false
próximo
caso "gif"
carimbo = fStream.read (6)
fori = 0to5
ifacb (midb (carimbo, i+1,1)) = gif (i) thencheckFiletype = tredelElECheckFileType = false
próximo
caso "png"
carimbo = fStream.read (4)
fori = 0to3
ifacb (midb (carimbo, i+1,1)) = png (i) thencheckFileType = tredelElEcheckFileType = false
próximo
caso "bmp"
carimbo = fStream.read (2)
fori = 0to1
ifacb (midb (carimbo, i+1,1)) = bmp (i) thencheckFileType = tredelElEcheckFileType = false
próximo
endSelect
fStream.close
setfsetem = nada
iferr.number <> 0ThencheckFileType = false
Função final
%>
Então, ao se inscrever
A cópia de código é a seguinte: checkFileType (server.mappath ("cnbruce.jpg")))
ou
CheckFileType ("f: /web/164/images/cnbruce.jpg")) de qualquer maneira, é para detectar o tipo de arquivo de imagem que verifica o endereço físico local e retorna o valor verdadeiro ou falso
Portanto, essa situação é usada no upload da imagem. O método atual é primeiro permitir o upload do arquivo "pseudo-imagem" e, em seguida, use a função personalizada acima para determinar se o arquivo está em conformidade com as especificações da imagem. Se for um arquivo de imagem disfarçado de Trojan, o FSO o excluirá, por exemplo:
Copie o código da seguinte
IfNotcheckFileType (Server.mappath (nome do arquivo)) então