afschermen geuploade documenten

Status
Niet open voor verdere reacties.

simson

Gebruiker
Lid geworden
23 okt 2004
Berichten
67
Hallo,

Ik heb een CMS-website gebouwd waarbij de gebruikers de inhoud van de pagina's kunnen bewerken maar ook documenten (pdf's e.d.) kunnen uploaden. Voor het bewerken van de paginainhoud maak ik gebruik van CKeditor, voor het documentbeheer maak ik gebruik van CKfinder.

Om van de website gebruik te kunnen maken dienen gebruikers in te loggen. Er zijn verschillende projecten die opgestart kunnen worden vanuit een submap met dus een eigen inlog. De documenten komen per project in submappen terecht. (Ingesteld via CKfinder).

Hoe kan ik het zo inrichten dat documenten alleen via de applicatie benaderd kunnen worden en niet via een internetbrowser als je de url weet tenminste?

Ik weet dat ik internetmappen kan beveiligen met een gebruikersnaam/wachtwoord via .htaccess. Maar als ik de documenten in een internetmap benader via de website is het niet gebruikersvriendelijk dat dan eerst nog een gebruikersnaam of wachtwoord ingevoerd moet worden. Kan ik met php programmeren tegen .htaccess o.i.d.?

Is het mogelijk om een soort van wrapper te bouwen, een php-programma dat automatisch opstart als een document in internetmap wordt benaderd en dat dan kijkt of de gebruiker de gewenste sessie instellingen heeft, zo ja dan kan het document worden getoond, zo nee dan volgt een foutmelding.

Wie heeft ervaring met dit soort zaken en tips voor mij?

gr. Simson
 
Je zou in je htacces biojv. kunnen met werken met geauthoriseerde ipadressen..
IEmand met het juiste ip kan er bij, iemand zonder het juiste ip niet!
 
Het makkelijkste is om je documenten buiten de WWW map te zetten (niet toegankelijk via het web dus) en een PHP pagina te maken die ze voor je ophaalt. In die PHP pagina controleer je eerst of de gebruiker het document mag zien, en zo ja dan output je het document met een header alsof het een gewoon document is.

Hier is een voorbeeldje van PHP.net over het outputten van een pdf bestand via een PHP file, als je je controle functies hierboven knalt dan zou het prachtig moeten werken:

PHP:
<?php
// We'll be outputting a PDF
header('Content-type: application/pdf');

// It will be called downloaded.pdf
header('Content-Disposition: attachment; filename="downloaded.pdf"');

// The PDF source is in original.pdf
readfile('original.pdf');
?>

Meer info:
http://nl3.php.net/manual/en/function.header.php
 
Goed tipe Frats, bedankt.

Echter documenten worden geupload door gebruikers via CKfinder. Het zijn geen documenten die ik als webmaster plaats.
 
Maakt niet uit, als de user ze upload kun je ze door je PHP script buiten de WWW map laten zetten, gezien je server zelf wel toegang heeft tot die mappen daar.
Desnoods zet je ergens in de WWW map maar hang je er een .htaccess voor die toegang verbiedt voor alle externe verbindingen, dat heeft ongeveer hetzelfde effect.

Je eigen scripts komen daar altijd doorheen omdat ze op dezelfde server staan en kunnen het document dus tonen, maar directe teogang word geblokkeerd.
 
Aha, dus een .htaccess blokkeert niet de eigen website. Dan ga ik een .htaccess zetten om externe verbindingen tegen te gaan.

Dan nog een ander aspect. De website wordt gebruikt voor meerdere projecten. Elk project staat in een eigen submap van de hoofdsite en heeft een eigen inlog. Documenten staan per project weer onder de submap van het project in documentmappen. Gebruikers hebben toegang tot één of meerdere projecten via de betreffende inlog. Als ze zijn ingelogd via het ene project mogen ze niet documenten van andere projecten op kunnen vragen. Heb je enig idee hoe ik dat zou kunnen opvangen?

b.v.d. Simson
 
Dat zul je intern in je systeem moeten regelen, maar als je de boel eenmaal zo hebt afgeschermd dat gebruikers er niet van buitenaf bij kunnen, dan kun je extra informatie opslaan bij je documenten die info bevatten over wie het wel en niet mogen bekijken.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan