Das ASP -Upload -Verletzlichkeit, das ich oft höre, besteht darin, einige Trojan -Dateien hochzuladen, indem der Suffix -Name geändert wird (um sie auf Bilddatei -Suffix zu ändern) und sie hochzuladen.
Verwenden Sie für diese Situation die folgenden Funktionen, um zu unterscheiden:
Die Codekopie lautet wie folgt:
<%
'************************************************
Mit der Überprüfungsfunktion wird überprüft, ob die Datei eine Bilddatei ist
'Der Parameter -Dateiname ist der Pfad zur lokalen Datei
„Wenn es sich um eine Datei JPEG, GIF, BMP, PNG -Bild handelt, gibt die Funktion true zurück, andernfalls gibt es false zurück
'************************************************
constadypebinary = 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) = cyte (& h6) (& h6) = CByte (& H61) (& h6) (& h3) (& h39): gif (5) = cByte (& h6) (& h6) (& h6) (& h3) (& h3) (& h6) (& h3) (& h3) (& h39) (5) = CByte (& h61) (& h3) (5) (5) (5) (5) ()af (
Funktionscheckfiletyp (Dateiname)
onErrorresumeNext
Checkfiletype = false
DimfStream, Fileext, Stempel, i
Fileext = Mid (Dateiname, Instrrev (Dateiname, ")+1)
setfstream = server.createObject ("adodb.stream")
fstream.open
fstream.type = adypebinary
fstream.loadfromFileFileName
fstream.position = 0
selectCaseFileext
Fall "JPG", "JPEG"
Stempel = fstream.read (2)
fei = 0to1
IFACB (MIDB (Stempel, i+1,1)) = jpg (i) thenCheckFiletype = trueScheckFiletype = false
nächste
Fall "GIF"
Stempel = fstream.read (6)
fei = 0to5
IFACB (MIDB (Stempel, i+1,1)) = gif (i) thenCheckFiletype = trueScheckFiletype = false
nächste
Fall "PNG"
Stempel = fstream.read (4)
fei = 0to3
IFACB (MIDB (Stempel, i+1,1)) = png (i) thenCheckFiletype = trueScheckFiletype = false
nächste
Fall "BMP"
Stempel = fstream.read (2)
fei = 0to1
IFACB (MIDB (Stempel, i+1,1)) = BMP (i) ThenCheckFiletype = trueSeTheckFiletype = false
nächste
Endauswahl
fstream.close
setfsetem = nichts
ireerr.number <> 0TheCheckFiletype = false
Endfunktion
%>
Dann bei der Bewerbung
Die Codekopie lautet wie folgt: CheckFiletype (Server.MAppath ("Cnbruce.jpg"))
oder
CheckFiletype ("f: /web/164/images/cnbruce.jpg")) Wie auch immer
Daher wird diese Situation im Bild -Upload verwendet. Die aktuelle Methode besteht darin, zuerst das Hochladen der Datei "Pseudo-Image" zuzulassen und dann mit der oben genannten benutzerdefinierten Funktion zu bestimmen, ob die Datei den Bildspezifikationen entspricht. Wenn es sich um eine trojanische, verkleidete Bilddatei handelt, löscht FSO sie beispielsweise:
Kopieren Sie den Code wie folgt: Datei.Saveasserver.Mappath (Dateiname) 'Speichern Sie die Datei
IfnotheckFileType (server.mappath (Dateiname)) dann