Avatar billede ch007 Nybegynder
23. december 2003 - 10:27 Der er 8 kommentarer og
1 løsning

Sikring af upload af bestem filer vS Virus

I spg:

http://www.eksperten.dk/spm/442991

har jeg fået hjælp til at lave et uploadnings-sript, der gør at jeg og mine brugere kan uploade filer via min hp.

Jeg er ved at lave sådan at brugere kun kan uploade filer af typen .jpg og .gif - det er jo til at finde ud af. Men den kan vel ikke sikre at den bruger tager en .exe fil og døber den -gif istedet og uploader?

Og kan man sikre mod upload af vira? Nu kan alle jo uploade til min server...
Avatar billede erikjacobsen Ekspert
23. december 2003 - 10:35 #1
nu er der li'som ikke vira i .gif og .jpg filer ;))

Men ja, en bruger kan ombøde en .exe til .gif, og umiddelbart er der ikke
noget at gøre ved det. Men både .gif og .jpg filer "starter" på hver deres
specielle måde, som man kan gå ind og tjekke på. Hvordan man går i ASP
ved jeg dog ikke.
Avatar billede ch007 Nybegynder
23. december 2003 - 13:49 #2
Er der nogle der kan svare på hvordan man tjekker om det virkelig er et billede og ikke fx en exe-fil?
Avatar billede eagleeye Praktikant
24. december 2003 - 01:54 #3
Du kan åbne filen og tjekke at en .gif indeholder GIF som de første karakter og en .jpg fil indeholder JFIF

Her en funktion kan kan gøre det og så kan du når du har gemt filen åbne den og tjekke.

if isGIForJPG("et filnavn") then
'Ok gå vidre
else
  Slet filen og meld fejl.
end if


function isGIForJPG(filnavn)
  Set FSO = CreateObject("Scripting.FileSystemObject")
  Set file = FSO.OpenTextFile(filnavn,1)
  strType = file.Read(13)
  if inStr(1,strType,"GIF")=1 or inStr(1,strType,"JFIF") > 1 then
    isGIForJPG = True
  else
    isGIForJPG = False
  end if 
  file.Close
  Set file = Nothing
  Set FSO = Nothing
end function
Avatar billede eagleeye Praktikant
24. december 2003 - 01:59 #4
Det nok bedre at lave den if sætning:

  if inStr(1,strType,"GIF")=1 or inStr(1,strType,"JFIF") > 1 then


Om til denne da både JPG oh JPEG indeholder ÿØÿ som de 3 føste tegn:

  if inStr(1,strType,"GIF")=1 or inStr(1,strType,chr(255) & chr(216) & chr(255)) = 1 then
Avatar billede ch007 Nybegynder
25. december 2003 - 10:12 #5
eagleeye >> Det ser fornuftigt ud. Prøver det lige senere, jeg har ikke lige tid nu...

Men du siger "jeg" skal åbne filen og tjekke de første 3 bogstaver. Hvis det nu er en anden fil med virus, vil denne virus så ikke blive spredt når denne bliver tjekket ang bogstaver?
Avatar billede eagleeye Praktikant
25. december 2003 - 11:49 #6
Ja den åbner filen som en text fil og læser de første karakter. Virus spredes ikke ved at læse en fil, men ved at execute en fil (exe,com,vbs)
Det jeg kan ikke se der skulle se noget ved at læse lidt fra filen.
Avatar billede ch007 Nybegynder
27. december 2003 - 09:23 #7
eagleeye >> Det virker bare kanont...

Smider du lige et svar??

Hvis du gider må du gerne smider koderne til en funktion der gør at jeg kan slette filen, hvis den ikke virker. Jeg har forstået systemet i det hele, men jeg er ikke rigtig inde i det her functions-halløj, så en slet funktion vil være guld værd...

Men jeg må vel også kunne lave funktionen så den tester på brugeren harddisk-inden den uploader eller hva?
Avatar billede eagleeye Praktikant
27. december 2003 - 11:25 #8
Ja her et svar:

Du bruger FSO til at slette med.

if isGIForJPG("et filnavn") then
'Ok gå vidre
else
  Set FSO = CreateObject("Scripting.FileSystemObject")
  FSO.DeleteFile Server.MapPath(filnavnet)
end if


Nej det tvivler jeg stærkt på du tjekke brugeres harddisk det vil jo være et ekstremt sikkerheds hul. Hvis du laver en applet eller ActiveX object som man skal loade på siden så kan man godt lave noget fil behandling.
Avatar billede ch007 Nybegynder
27. december 2003 - 11:35 #9
Ok, jeg vil prøve FSO.

Tak igen
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester