Ik heb een uitgebreide "AJAX" upload class geschreven voor PHP4 (750 regels code zonder comments). AJAX tussen aanhalingstekens omdat met AJAX niet geupload kan worden. Wat werkelijk gebeurd is dat een upload wordt gesubmit naar een hidden iframe. Waardoor de pagina dus niet gerefreshed hoeft te worden.
Nu wil ik de veiligheid maximaliseren. De class ondersteund https en http, de bestandsnaam wordt gecontroleerd op illegale tekens middels een regex. Het mimetype, de extensie en de bestandsgrootte worden gecontroleerd. Locale (chmod 0774) schrijfrechten worden maar een kort moment toegepast op de upload map, enkel tijdens het copieren van een bestand van zijn tijdelijke plaats op de server naar zijn uiteindelijke locatie waarna weer leesrechten worden toegepast (chmod 700).
De upload class werkt met sessies. Dus het object wordt in de sessie geplaatst en moet met een pointer aangeroepen worden na 1 keer aangemaakt te zijn binnen de sessie. Buiten een sessie om kan de class niet gebruikt worden.
Zijn er nog meer dingen die kan doen om de veiligheid te verhogen? Ik weet dat controle op mime-type niet waterdicht is. Zijn er nog methoden die ik kan toepassen ter controle die zekerder maken dat een bestand wat geupload wordt ook daadwerkelijk is hoe het zich voordoet?
Nu wil ik de veiligheid maximaliseren. De class ondersteund https en http, de bestandsnaam wordt gecontroleerd op illegale tekens middels een regex. Het mimetype, de extensie en de bestandsgrootte worden gecontroleerd. Locale (chmod 0774) schrijfrechten worden maar een kort moment toegepast op de upload map, enkel tijdens het copieren van een bestand van zijn tijdelijke plaats op de server naar zijn uiteindelijke locatie waarna weer leesrechten worden toegepast (chmod 700).
De upload class werkt met sessies. Dus het object wordt in de sessie geplaatst en moet met een pointer aangeroepen worden na 1 keer aangemaakt te zijn binnen de sessie. Buiten een sessie om kan de class niet gebruikt worden.
Zijn er nog meer dingen die kan doen om de veiligheid te verhogen? Ik weet dat controle op mime-type niet waterdicht is. Zijn er nog methoden die ik kan toepassen ter controle die zekerder maken dat een bestand wat geupload wordt ook daadwerkelijk is hoe het zich voordoet?