Avatar billede wampiro-uha Nybegynder
10. januar 2004 - 17:17 Der er 17 kommentarer og
1 løsning

Tjek for virus ved upload.

Jeg har et site hvor folk kan uploade filer såsom .doc, .txt osv. og en masse billeder.

Det er sådan så hver bruger har deres arkiv. Nu vil jeg gerne tjekke alle filer som bliver uploadet til min server for virus.

Hvordan gøres dette smart og nemt.
Avatar billede wampiro-uha Nybegynder
10. januar 2004 - 17:18 #1
Det kunne være lækkert hvis brugeren kunne få en slags advarsel hvis der er virus i den fil de vil uploade, hvorefter uploadingen så blev anulleret.

Og hvis der intet var så blev filen bare uploadet!
Avatar billede Slettet bruger
10. januar 2004 - 17:46 #2
Du kan nok ikke fange en virus før filen er helt uploadet. (Men dit script kan sagtens slette den, før den bliver tilgængelig for andre.)

Det vil kræve, at du installerer et antivirusprogram på serveren, og det får du nok kun lov til, hvis det er din egen server. Hvis den kører Linux har jeg hørt meget godt om clamav
Avatar billede wampiro-uha Nybegynder
10. januar 2004 - 17:49 #3
Jeg har egen server. Og den kører med FreeBSD.

Men er nok ikke nogen haj til at skulle sætte virusprogram op så den tjekker automatisk og sletter osv.
Avatar billede Slettet bruger
10. januar 2004 - 17:54 #4
OK, egen server gør det lidt lettere. Du har selv styr på de normale upload-funktioner, ikke? For så kan jeg nok godt finde på noget, der vil kunne gøre det, du ønsker.
Avatar billede Slettet bruger
10. januar 2004 - 17:59 #5
Først og fremmest er FreeBSD også en understøttet platform for ClamAV. så vidt - så godt.
Avatar billede wampiro-uha Nybegynder
10. januar 2004 - 18:33 #6
Hmm... Det jeg indtil videre ved er at jeg har en helt normal opsætning på serveren.

Og med hensyn til normale upload-funktioner så bruger jeg bare PHP's indb. funktion.
Avatar billede Slettet bruger
10. januar 2004 - 18:39 #7
Ja, jeg mente også bare, om du allerede havde et upload-script, så virus-checket bare skulle sættes ind i det.

Først skal du installere checkeren. Ifølge ClamAV-hjemmesiden er der en officiel port til FreeBSD i /usr/ports/security/. Der er både en stable og en udviklingsudgave. Du bør nok vælge den stable. Den hedder bare clamav

Jeg har ikke styr på installation af pakker på FreeBSD, så den del må du klare selv. Når pakken er installeret, kan jeg så hjælpe dig videre.

Jeg er igang med lidt PHP til selve checket, når vi kommer så langt.
Avatar billede wampiro-uha Nybegynder
10. januar 2004 - 18:48 #8
Nice nok!
Så snart du har PHP'en klar vil jeg meget gerne se det :-)
Avatar billede martinbk Nybegynder
10. januar 2004 - 19:27 #9
en indskudt sætning:

cd /usr/ports/security/clamav/ ; make install clean

det burde installerer clamav og alle den's dependcies
Avatar billede Slettet bruger
10. januar 2004 - 20:42 #10
function VirusCheck($filename){
  $clam_command='/usr/bin/clamscan'; // ret til din sti.
  $filename=escapeshellarg($filename);
  $lastline=exec("$clam_command $filename",$output,$returncode);
  if (0==$returncode){
    // Ingen virus fundet
    return TRUE;
  } else {
    // Virus er fundet - eller der er optrådt en fejl.
    return FALSE;
  }
}

Funktionen bruges således i et script:

if (VirusCheck($fil)){
  // Filen er OK, fortsæt med at behandle den
} else {
  // Filen er ikke OK, skriv fejlbesked og slet fil.
}
Avatar billede wampiro-uha Nybegynder
10. januar 2004 - 21:30 #11
Når jeg skal slette filen, skal jeg så bare bruge php's funktion igen?

og hvordan kan jeg teste om funktionen virker?
vil helst ikke have virus når jeg tjekker ;-)
Avatar billede Slettet bruger
10. januar 2004 - 21:54 #12
For det første har jeg slet ikke kendskab til at der skulle eksistere en virus, der skulle kunne smitte din FreeBSD.

Derudover skulle clamav have nogle test-filer, som man kan afprøve med. Lige nøjagtig hvor de er installeret ved jeg ikke, men måske /usr/clamav/test eller /usr/share/clamav/test eller noget i den stil. Prøv at hente en af dem ned til din egen maskine og derefter uploade den.
Avatar billede wampiro-uha Nybegynder
11. januar 2004 - 01:22 #13
det ser ud til med det ovenstående php-script at filen slet ikke uploades før den tjekkes for virus.
men hvorfor skal jeg så slette den hvis der er virus?
Avatar billede Slettet bruger
11. januar 2004 - 01:33 #14
Så ser du forkert. Funktionen skal sættes ind i det script, der modtager filen, og det bliver først kørt af serveren, når alt data er overført til serveren.

til gengæld kan du (måske - det afhænger af safe-mode) checke filen før du kører move_uploaded_file(), og så sletter PHP automatisk filen for dig.
Avatar billede myplacedk Nybegynder
11. januar 2004 - 09:12 #15
Standard virus-testen:

X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*

Gem det i en fil. Ethvert virus-program burde genkende det som en virus. Men det er kun en test-virus, den er ganske uskadelig.
Hvis den bliver kørt som et program (win32 .com-fil) vil den bare skrive en linje tekst, hvis den ikke bliver fanget af noget AV.
Avatar billede wampiro-uha Nybegynder
11. januar 2004 - 14:05 #16
Ok, det hele ser rigtig godt ud. Jeg arbejder videre med det og vender tilbage snarest muligt :-)

Utrolig mange gange tak!
Avatar billede wampiro-uha Nybegynder
14. januar 2004 - 11:32 #17
Jeg tror faktisk det hele virker!

Hvis sandbox gider lave et svar så er der point til ham ;-)

MANGE TAK!
Avatar billede Slettet bruger
14. januar 2004 - 14:25 #18
Svar
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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