Archief - Bestanden op beveiligde pagina beveiligen

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

dennisd

Legacy Member
Hallo allemaal,

ik heb een website gemaakt, en nu willen we hier een Login sectie in.
Zo gezegd, zo gedaan. Maar nu lopen we tegen het probleem aan dat als we bijvoorbeeld .pdf bestanden online zetten op deze beveiligde pagina, dat je wel aan deze bestanden kan geraken als je niet ingelogd bent. Er zou dus een melding moeten komen dat je ingelogd moet zijn om dit bestand te kunnen downloaden.

Ik heb hier al veel over opgezocht, en kom bij dingen uit zoals .htacces, maar ik word er niet wijzer uit..

weten jullie in welke richting ik moet zoeken?
Of als iemand het kan uitleggen, graag.

Grt Dennis

dJeez

Legacy Member
Er zijn verschillende oplossingen mogelijk uiteraard. Welke scripting taal gebruik je? Hoe heb je de huidige login geïmplementeerd? Link je zelf op die beveiligde sectie rechtstreeks naar die PDFs of haal je die door een downloadscript?

dennisd

Legacy Member
ik heb een .php pagina waar je enkel op kan nadat je ingelogd bent.
daar link ik dan rechtstreeks naar de pdf's idd..
wat is volgens jou dan de beste methode om dit te doen?

Grt

dJeez

Legacy Member
Niet rechtstreeks linken naar de PDFs, maar ze downloaden via een script (waar je kan controleren of de gebruiker is ingelogd en of hij effectief toegang moet krijgen tot die specifieke PDF) en de folder waar de PDFs staan bij voorkeur ook buiten de webroot zetten zodat rechtstreeks downloaden sowieso al niet kan.

dennisd

Legacy Member
wat voor script is dat dan? denk je dat hier een tutorial van te vinden is?
er moeten toch meerdere mensen hiertegen aan lopen zou je denken :) ?

YaMo

Legacy Member
Ik denk dat je via Google wel het een en ander kan vinden, ja.

dennisd

Legacy Member
als ik weet naar wat ik moet zoeken, zou ik inderdaad wel het een en ander via google kunnen vinden ja..
maar omdat ik dat dus niet weet, ben ik naar hier gekomen..

dennisd

Legacy Member
wat ik dus eigelijk wil is het volgende:

het login gedeelte van de site heeft maar 1 gebruiker (voor alle leden van de club hetzelfde)
ik zou dus willen dat ze alleen toegang tot de bestanden op de login pagina krijgen als ze op de login pagina zelf zijn.
En niet als ze bijvoorbeeld de link naar het bestand in hun browser plakken zonder langs de login pagina geweest te zijn.

Ik heb al zeker 3-4 systemen geprobeerd, maar er wil niet echt iets lukken.

De laatste (en volgens mij simpelste) die ik geprobeerd heb is deze:
phphulp.nl

Audiosonic

Legacy Member
Maak u een externe download.php, check daar op de pagina en of de logingegevens correct zijn, indien ja-> haal bestand op, indien nee-> destroy alle sessions/cookies/... en ga naar loginscherm

dennisd

Legacy Member
ja, ik snap wat je zegt..

maar zelf ken ik niks van php, dus ik wil ergens kunnen uitzoeken hoe ik dit .php bestandje kan gaan maken.

Ik link nu nog steeds rechtstreeks naar de pdf bestanden, vanmiddag heb ik het login gedeelte op poten gezet (en dat werkt vrij goed)


Grt

Audiosonic

Legacy Member
Ik zou uw loginscript hier niet zo open en bloot zetten, zo kan ik makkelijk een weg vinden in uw site en met kwaadwillige bedoelingen uw site volledig wissen moest hij later online gaan.

dennisd

Legacy Member
als je bij de paginabron kijkt, dan kan je hier toch niets van zien ?

dennisd

Legacy Member
Audiosonic zei:
Maak u een externe download.php, check daar op de pagina en of de logingegevens correct zijn, indien ja-> haal bestand op, indien nee-> destroy alle sessions/cookies/... en ga naar loginscherm

Denk je dat ik hier ergens meer info over kan vinden?
Want ik heb echt geen idee hoe ik hier aan begin..

dennisd

Legacy Member
Ik ben ondertussen wat verder. Nu ga ik op de login pagina linken aan een php file die op zijn beurt naar het pdf bestand linkt op de volgende manier:

<?php
$downloadfile = "downloads/bestand.pdf";
header('Content-Type: application/octet-stream');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="'.$downloadfile.'"');
header('Content-Length: '.filesize($downloadfile));
readfile($downloadfile);
?>


maar nu zit ik met de vraag, nu kan toch nog iedereen aan het bestand als je de link hebt naar het php bestand? of is het dan de bedoeling dat je in de link van het php een of ander getal gebruikt zodat mensen niet weten welk bestand achter het php bestand zit?

Fr3aK

Legacy Member
dennisd zei:
Ik ben ondertussen wat verder. Nu ga ik op de login pagina linken aan een php file die op zijn beurt naar het pdf bestand linkt op de volgende manier:

<?php
$downloadfile = "downloads/bestand.pdf";
header('Content-Type: application/octet-stream');
header('Content-Type: application/pdf');
header('Content-Disposition: attachment; filename="'.$downloadfile.'"');
header('Content-Length: '.filesize($downloadfile));
readfile($downloadfile);
?>


maar nu zit ik met de vraag, nu kan toch nog iedereen aan het bestand als je de link hebt naar het php bestand? of is het dan de bedoeling dat je in de link van het php een of ander getal gebruikt zodat mensen niet weten welk bestand achter het php bestand zit?
Daarom dat je eerst moet controleren of de persoon die uw download-pagina opent ook ingelogd is.
PHP:
if ($_SESSION['loggedIn']) {
  $downloadfile = "downloads/bestand.pdf";
  header('Content-Type: application/octet-stream');
  header('Content-Type: application/pdf');
  header('Content-Disposition: attachment; filename="'.$downloadfile.'"');
  header('Content-Length: '.filesize($downloadfile));
  readfile($downloadfile);
} else {
  unset($_SESSION['loggedIn']);
  header('Location: login.php');
}
En dan in uw login.php een session variabele aanmaken als iemand ingelogd is:
PHP:
$_SESSION['loggedIn'] = true;

Hoop dat je er iets aan hebt, is zeer basic uitgelegd en ook geen perfecte manier maar 't werkt :)

adrianhates

Legacy Member
tommie314 zei:
Zorgt dit niet voor een gigantisch grote load aangezien grote bestanden eerst volledig moeten worden ingeladen?

jep , vooral uw processor tijd zal daarvan af zien :)
Qua bandwidth denk ik niet dat het veel zal schelen?

dJeez

Legacy Member
tommie314 zei:
Zorgt dit niet voor een gigantisch grote load aangezien grote bestanden eerst volledig moeten worden ingeladen?
Neen, niet noodzakelijk, aangezien je dat op verschillende manieren kan oplossen. De handigste manier is een server gebruiken waar je de bestanden rechtstreeks aan kan doorspelen eens de login check is voltooid, check voor apache mod_xsendfile maar eens.

adrianhates

Legacy Member
die module is wel niet zo 'ingeburgerd' als je zou willen he djeez..
Op de meeste shared hostings ga ge dat niet vinden! En je moet al sjans hebben dat ze het eventueel willen compileren en installeren.
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan