Ik zit met de volgende situatie. Ik ben bezig met een soort foto-album waarin afbeeldingen, filmpjes, en allerlei andere media kunnen worden geupload en worden weergegeven. Ik wil dat het mogelijk is om een bepaald album of afbeelding te kunnen 'disablen', dus dat deze voor het publiek (tijdelijk) niet bereikbaar is.
Het is niet moeilijk om de pagina die het plaatje of filmpje moet weergeven een melding te laten geven dat de file niet toegankelijk is. Maar wanneer de gebruiker eenmaal de directe URL naar het plaatje of filmpje krijgt/raad, is het alsnog toegankelijk.
Aanvankelijk was ik van plan de directory waar alle media-files instaan te beveiligen met .htaccess, en dan een php file te maken die checked of de gebruiker het betreffende bestand mag zien, en zo ja, een soort passthrough maakt zodat het bestand via dat script alsnog bij de bezoeker terecht komt.
Het probleem hierbij was dat je gebruik moet maken van mime-types, en de functie mime_content_type() wordt niet ondersteund op mijn webserver, en zelfs al zou ik zorgen dat die wel werkt, dan zal het script dus niet draaien op een andere server waar deze functie uit staat, dat is dus niet waar ik heen wil. De tweede mogelijkheid was om alle mime-types te hardcoden, alleen mijn script moet alle mogelijke media kunnen verwerken, en ik kan op voorhand nooit alle mogelijke extensies verzinnen, dat zou het script een stuk minder dynamisch maken.
Een andere optie die ik had bedacht was alle media die niet getoond mogen worden, verplaatsen naar een niet-publieke map, en op het moment dat een gebruiker deze media wil bekijken, en daar de rechten voor heeft, de file laten kopieeren naar een tijdelijke wel-publieke map en na het bekijken verwijderen. Alleen dit zou waarschijnlijk te veel cpu-kracht en bestandsruimte vragen, en is zowiezo niet erg elegant.
Een derde mogelijkheid was om alle files op te slaan met een hashcode in de bestandsnaam, deze hashcode moet ook in de SQL tabel komen te staan bij de betreffende file, op deze manier is het onwaarschijnlijk dat iemand de file weet te raden, maar opnieuw blijft het probleem dat wanneer de naam eenmaal bekend is, deze ook door anderen kan worden bekeken.
Zouden er nog andere mogelijkheden zijn om dit op een nette manier op te lossen?
Het is niet moeilijk om de pagina die het plaatje of filmpje moet weergeven een melding te laten geven dat de file niet toegankelijk is. Maar wanneer de gebruiker eenmaal de directe URL naar het plaatje of filmpje krijgt/raad, is het alsnog toegankelijk.
Aanvankelijk was ik van plan de directory waar alle media-files instaan te beveiligen met .htaccess, en dan een php file te maken die checked of de gebruiker het betreffende bestand mag zien, en zo ja, een soort passthrough maakt zodat het bestand via dat script alsnog bij de bezoeker terecht komt.
Het probleem hierbij was dat je gebruik moet maken van mime-types, en de functie mime_content_type() wordt niet ondersteund op mijn webserver, en zelfs al zou ik zorgen dat die wel werkt, dan zal het script dus niet draaien op een andere server waar deze functie uit staat, dat is dus niet waar ik heen wil. De tweede mogelijkheid was om alle mime-types te hardcoden, alleen mijn script moet alle mogelijke media kunnen verwerken, en ik kan op voorhand nooit alle mogelijke extensies verzinnen, dat zou het script een stuk minder dynamisch maken.
Een andere optie die ik had bedacht was alle media die niet getoond mogen worden, verplaatsen naar een niet-publieke map, en op het moment dat een gebruiker deze media wil bekijken, en daar de rechten voor heeft, de file laten kopieeren naar een tijdelijke wel-publieke map en na het bekijken verwijderen. Alleen dit zou waarschijnlijk te veel cpu-kracht en bestandsruimte vragen, en is zowiezo niet erg elegant.
Een derde mogelijkheid was om alle files op te slaan met een hashcode in de bestandsnaam, deze hashcode moet ook in de SQL tabel komen te staan bij de betreffende file, op deze manier is het onwaarschijnlijk dat iemand de file weet te raden, maar opnieuw blijft het probleem dat wanneer de naam eenmaal bekend is, deze ook door anderen kan worden bekeken.
Zouden er nog andere mogelijkheden zijn om dit op een nette manier op te lossen?
[ Voor 12% gewijzigd door plakbandrol op 20-02-2006 02:37 ]