Peter S - tack! Ska kolla! :)
Peter S skrev:
Däri listas fler intressanta index än "error" du kan kolla, bl.a. content-type och storlek. Om det bara är textfiler du är intresserad av så kanske du kan nöja dig med filer där content-type = text/plain.
Enligt PHP:s dokumentation finns det ett problem med content-type och storlek: PHP kollar inte att de stämmer. Mao, man kan inte lita på deras innehåll. Eller, åtminstone, var det den uppfattningen jag fick när jag läste manualen före skapandet av den här tråden.
php.net skrev:
You can, for example, use the $_FILES['userfile']['size'] variable to throw away any files that are either too small or too big. You could use the $_FILES['userfile']['type'] variable to throw away any files that didn't match a certain type criteria, but use this only as first of a series of checks, because this value is completely under the control of the client and not checked on the PHP side.
Troxy skrev:
Vilken teckenkodning förväntar du dig att användarna ska ladda upp?
Om vi t.ex. väljer Windows-1252/ANSI (som är förvalt i Notepad) så kan man scanna textfilen efter "konstiga" bytes/codepoints som aldrig förekommer i skrift.
Det är ganska orimligt att någon skulle använda låga kontrolltecken som t.ex. 0x0, 0x1, 0x2 osv...
Dyker det upp sånt i filen så kan man misstänka att det är något annat än text och slänga det åt skogen.
Tja... om jag begränsar uppladdningen till mig själv kan jag visserligen låsa teckenkodningen, men frågan är hur mycket det tillför när jag då kan kräva att man är inloggad som admin för att filuppladdningsskriptet ska köras?
Annars är det betydligt svårare att gissa vilken teckenkodning folk har. De behöver ju inte sitta på Windows över huvudtaget...
Men det är ju ändå en god tanke... Filen borde inte innehålla några skumma tecken, så man kan kanske göra en preg_match mot a-z och lite annat smått och gott typ parenteser, 0-9, diverse punkter och dylikt? Vilket är det största ofarliga character-intervall, som inkluderar allt som kan tänkas stå legitimt i vanlig engelska?
Men vad händer i så fall med end-of-file? Det måste väl inkluderas i kollen? Eller?
Och skulle en sådan preg-match stoppa tex en Word-fil?
Troxy skrev:
Och slutligen, att kolla filändelsen är så otroligt tandlöst att det inte är lönt.
Att kolla filändelsen är uselt skydd mot folk som vill jävlas, men kan vara bra som stopp mot folk som helt enkelt gör fel och råkar ladda upp en Word-fil (tex) och inte en txt-fil.