In één van m'n webapps heb ik momenteel een file sharing systeem draaien, die wil ik gaan refactoren, alleen ik loop tegen een paar problemen aan. De huidige versie werkt als volgt:
- Bestand wordt geupload
- PHP hasht de bestandsnaam + random string zodat je een unieke bestandsnaam krijgt
- Dat bestand wordt in een dir geplaatst
- De originele bestandsnaam + de nieuwe naam gaan in een MySQL db en ze krijgen een id mee
- Als een user dan een bestand opvraagt gaat dat als volgt:
- De user klikt op een link met parameters in de url (de fileid staat in de url)
- Bestandsnaam wordt opgehaald van de db
- PHP leest bestand en flusht het naar de user
Werkt op zich allemaal prima, maar nu zou ik graag willen dat het allemaal wat afgeschermder was. Door een simpel index.php bestandje in de file dir te plaatsen voorkom ik al dat de lijst met bestandsnamen zichtbaar is. Maar ik zou ook graag willen dat direct linking over de URL helemaal uitgesloten wordt (ik wil niet dat iedereen elkaars bestanden zomaar kan downloaden).
Een paar opties die ik bedacht heb:
- .htaccess enz. -> geen optie, de app moet op nagenoeg alle hosts kunnen draaien (dus ook op hosts waar je geen custom .htaccess mag hebben)
- Upload inlezen en wegschrijven naar de MySQL en daar opslaan in een BLOB veld ofzo. Maar iets zegt mij dat dat een ranzige oplossing is, vraagt nogal wat resources van de database
- De bestanden opslaan op een machine die voor PHP wel bereikbaar is, maar die niet direct in verbinding staat met het internet -> ook geen optie, zelfde reden als de eerste optie
Weet iemand een andere oplossing?
- Bestand wordt geupload
- PHP hasht de bestandsnaam + random string zodat je een unieke bestandsnaam krijgt
- Dat bestand wordt in een dir geplaatst
- De originele bestandsnaam + de nieuwe naam gaan in een MySQL db en ze krijgen een id mee
- Als een user dan een bestand opvraagt gaat dat als volgt:
- De user klikt op een link met parameters in de url (de fileid staat in de url)
- Bestandsnaam wordt opgehaald van de db
- PHP leest bestand en flusht het naar de user
Werkt op zich allemaal prima, maar nu zou ik graag willen dat het allemaal wat afgeschermder was. Door een simpel index.php bestandje in de file dir te plaatsen voorkom ik al dat de lijst met bestandsnamen zichtbaar is. Maar ik zou ook graag willen dat direct linking over de URL helemaal uitgesloten wordt (ik wil niet dat iedereen elkaars bestanden zomaar kan downloaden).
Een paar opties die ik bedacht heb:
- .htaccess enz. -> geen optie, de app moet op nagenoeg alle hosts kunnen draaien (dus ook op hosts waar je geen custom .htaccess mag hebben)
- Upload inlezen en wegschrijven naar de MySQL en daar opslaan in een BLOB veld ofzo. Maar iets zegt mij dat dat een ranzige oplossing is, vraagt nogal wat resources van de database
- De bestanden opslaan op een machine die voor PHP wel bereikbaar is, maar die niet direct in verbinding staat met het internet -> ook geen optie, zelfde reden als de eerste optie
Weet iemand een andere oplossing?