bestand aanbieden zonder locatie vrij te geven
Hoe kan ik het beste een bestand aan een gebruiker van mijn website aanbieden zonder dat hij weet waar het bestand oorspronkelijk vandaan komt?
Op dit moment maak ik gebruik van cURL.
Dat gaat via dit script. Stel het bestand staat ergens op "www.test.nl" en mijn website draait op de KPN planet webspace:
Quote:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$username = "test";
$password = "test";
$url = "http://www.test.nl/testmap/test.pdf";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=file.pdf");
echo ($output);
?>
$username = "test";
$password = "test";
$url = "http://www.test.nl/testmap/test.pdf";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_BINARYTRANSFER, 1);
curl_setopt($ch, CURLOPT_USERPWD, "$username:$password");
curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_BASIC);
$output = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
header("Content-Type: application/octet-stream");
header("Content-Disposition: attachment; filename=file.pdf");
echo ($output);
?>
Het werkt perfect, maar ik ben bang dat als een gebruiker een IP-sniffer ofzo installeert, dat hij toch kan zien waar het bestand vandaan komt. (er wordt immers een connectie naar www.test.nl gemaakt)
Of is het zo dat het bestand eerst naar de server (waar mijn website op draait, en waar iedereen WEL het IP van mag weten) wordt gestuurd, en dan pas naar de gebruiker? Als dat zo is, dan weet niemand dat het via www.test.nl gaat toch?
Dus misschien heb ik al bereikt wat ik wil, maar ik weet het dus niet zeker...
Als iemand me hier iets over kan vertellen, graag :-)
Alvast bedankt!!
Het bestand wordt ingelezen door php. En php werkt alleen op de server. Dus de client zal daar niets van zien. En die sniffer zal dus ook op de server moeten staan anders valt er weinig te sniffen.
- SanThe - op 21/01/2012 18:35:08:
Het bestand wordt ingelezen door php. En php werkt alleen op de server. Dus de client zal daar niets van zien. En die sniffer zal dus ook op de server moeten staan anders valt er weinig te sniffen.
Nou dat is geweldig!! Bedankt voor je antwoord :-)
Het werkte dus al zoals ik wilde...
Oke, de server waar de website op draait (KPN webspace) moet natuurlijk niet gehackt worden, maar met bovenstaand script kan de gebruiker dus NOOIT erachter komen dat de file van www.test.nl af komt. Ideaal!!
Als ik dan even verder denk: dit zorgt er dan wel voor dat het dataverkeer van mijn KPN webspace enorm zal toenemen, want in feite download KPN dan eerst de file naar zich toe, en vervolgens wordt het aan de gebruiker op de website aangeboden. Toch? (als ik meteen via een simpele HTML website door zou linken naar de file op www.test.nl dan genereer ik niet dat verkeer bij KPN als het goed is).
Is mijn gedachtegang goed als ik dat zo vertel?
Thanks again en fijne avond!!
Gewijzigd op 21/01/2012 18:41:45 door sjef dresen
Ja, dat klopt. Echter dan weten we weer wel dat de file van test.nl komt.
- SanThe - op 21/01/2012 18:48:52:
Ja, dat klopt. Echter dan weten we weer wel dat de file van test.nl komt.
Thanks! Duidelijk verhaal.
Fijn om zo snel geholpen te zijn.
Is dit 100% super-safe, of zijn er toch nog mogelijkheden dat een eventuele hacker hier achter kan komen? In de PHP file staat natuurlijk die link naar www.test.nl
Zijn er manieren om een PHP file "in te zien" zoals bijvoorbeeld bij een *.txt file het geval is? Of zorgt de server waar de PHP file gehost is er ALTIJD voor dat hij alleen "gerunt" wordt, en dus nooit de source vrij geeft?
Zoals je ziet, ik weet nog niet zoveel van PHP. Ik weet wel dat het sjiek spul is om mee te werken :-)
Edit:
Ik heb voor de "extra veiligheid" ook nog een .htaccess file in de directory op www.test.nl waar de bestanden staan gezet. Daar staat in dat alleen het IP adres van de KPN server toegang heeft. Bovendien zie je in het script dat ik gebruik maak van gebruikersnaam en wachtwoord (ook beide via .htaccess)
In feite zou dit niet nodig zijn omdat toch niemand achter de locatie de bestanden op www.test.nl kan komen, maar misschien toch handig als extra veiligheid...
Ik heb voor de "extra veiligheid" ook nog een .htaccess file in de directory op www.test.nl waar de bestanden staan gezet. Daar staat in dat alleen het IP adres van de KPN server toegang heeft. Bovendien zie je in het script dat ik gebruik maak van gebruikersnaam en wachtwoord (ook beide via .htaccess)
In feite zou dit niet nodig zijn omdat toch niemand achter de locatie de bestanden op www.test.nl kan komen, maar misschien toch handig als extra veiligheid...
Gewijzigd op 21/01/2012 19:00:53 door sjef dresen
Zo sjiek is PHP nou ook weer niet, eigenlijk is het een heel boerse scripttaal
Ger van Steenderen op 21/01/2012 19:04:50:
Zo sjiek is PHP nou ook weer niet, eigenlijk is het een heel boerse scripttaal
Oh. Nou, wat je er allemaal mee kunt vind ik toch wel mooi om te zien.
Wat is dan "beter" om te gebruiken?
Heb je toevallig ook een idee over mijn laatste post? Klopt dat een beetje wat ik daar allemaal zeg?
Thanks!!
www.test.nl gelijk is.
Maar dit moet je zelf even bekijken.
Eigenlijk is het niet zo heel erg veiliger als je alleen via het IP van die KPN er op kan want als je in CMD gewoon ping command gebruikt. Dan vind je het IP van die KPN al en tegenwoordig is het ook heel makkelijk je IP naar een bestaand IP te veranderen. Dus dit kun je beter oppakken door iets aan een meerdere eisen te laten voldoen. Bijvoorbeeld een random getal die bij KPN en Maar dit moet je zelf even bekijken.
Bas van de Steeg op 21/01/2012 19:40:33:
Eigenlijk is het niet zo heel erg veiliger als je alleen via het IP van die KPN er op kan want als je in CMD gewoon ping command gebruikt. Dan vind je het IP van die KPN al en tegenwoordig is het ook heel makkelijk je IP naar een bestaand IP te veranderen. Dus dit kun je beter oppakken door iets aan een meerdere eisen te laten voldoen. Bijvoorbeeld een random getal die bij KPN en www.test.nl gelijk is.
Maar dit moet je zelf even bekijken.
Maar dit moet je zelf even bekijken.
Bedankt voor je antwoord Bas!
Daar heb je helemaal gelijk in. Iedereen kan dat IP "nabootsen".
Maar het kost toch niet veel moeite om dit erin te implementeren, dus laat ik het denk ik zo. Dat ik om gebruikersnaam + wachtwoord vraag maakt het mijns inziens wel extra veilig.
Wat bedoel je eigenlijk met "random getal"?
Dat er ergens op beide servers een random getal (éénmalig te verzinnen?!) in een bestandje staat, en dat dat dan moet overeen komen op beide servers?
Ik hoor graag van je!!
Schrijf dit wachtwoord vervolgens in een bestand. Dit bestand include je vervolgens via php naar je KPN. Zo weet de KPN dit wachtwoord alleen, Op deze manier kan de hacker het wachtwoord sowieso niet weten ookal heeft ie het ip nagebootst , dan moet de hacker nog een random wachtwoord kraken van 500 characters en op het moment dat dat gelukt is, is het wachtwoord al weer verandert.
Hoop dat je het nu snapt, zit namelijk op iPad dus typt niet zo chill.
Bas van de Steeg op 21/01/2012 19:59:46:
Zorg dat er in je .htacces om een random wachtwoord gevraagd word.
Schrijf dit wachtwoord vervolgens in een bestand. Dit bestand include je vervolgens via php naar je KPN. Zo weet de KPN dit wachtwoord alleen, Op deze manier kan de hacker het wachtwoord sowieso niet weten ookal heeft ie het ip nagebootst , dan moet de hacker nog een random wachtwoord kraken van 500 characters en op het moment dat dat gelukt is, is het wachtwoord al weer verandert.
Hoop dat je het nu snapt, zit namelijk op iPad dus typt niet zo chill.
Schrijf dit wachtwoord vervolgens in een bestand. Dit bestand include je vervolgens via php naar je KPN. Zo weet de KPN dit wachtwoord alleen, Op deze manier kan de hacker het wachtwoord sowieso niet weten ookal heeft ie het ip nagebootst , dan moet de hacker nog een random wachtwoord kraken van 500 characters en op het moment dat dat gelukt is, is het wachtwoord al weer verandert.
Hoop dat je het nu snapt, zit namelijk op iPad dus typt niet zo chill.
Wow, dat klinkt inderdaad héél veilig. Als ik dit straks of morgen werkend heb ben ik tevreden. Thanks dat je dit typt op je iPad. Ik gebruik hem eerlijk gezegd alleen om dingen op te lezen ;-)
Greetz!
Ik weet niet wat je webhost ondersteund maar ik denk dat je met een aantal basislessen het al kan.
Maarja met php is dit natuurlijk ook mogelijk.
Nogmaals succes en ik weet dat het wel lukt.
Bas van de Steeg op 21/01/2012 20:16:01:
Succes ermee ik weet namelijk dat het wel lukt. Maar wat je vraagt kost wel even tijd trouwens ik denk dat je dit beter met asp kan aanpakken. Dit omdat asp makkelijker is en je via asp al de standaard beveiliging van microsoft erin hebt zitten en je dus al niet meer de bron kan zien van een bestand (dit natuurlijk wel instellen maar dit is al gedaan met een slag op de spijker) .
Ik weet niet wat je webhost ondersteund maar ik denk dat je met een aantal basislessen het al kan.
Maarja met php is dit natuurlijk ook mogelijk.
Nogmaals succes en ik weet dat het wel lukt.
Ik weet niet wat je webhost ondersteund maar ik denk dat je met een aantal basislessen het al kan.
Maarja met php is dit natuurlijk ook mogelijk.
Nogmaals succes en ik weet dat het wel lukt.
Thanks voor de tip m.b.t. ASP!! Ik ga dit zeker overwegen als het uiteindelijk niet lukt via PHP. Maar ik ben al redelijk ver hiermee (zijn nog meer dingen die ik gemaakt heb omtrent de beveiliging).
Als je me nog één ding wilt vertellen/verduidelijken:
Quote:
Zorg dat er in je .htacces om een random wachtwoord gevraagd word.
Schrijf dit wachtwoord vervolgens in een bestand.
Schrijf dit wachtwoord vervolgens in een bestand.
Hoe moet ik ervoor zorgen dat er in mijn .htaccess (op de www.test.nl server) om een RANDOM wachtwoord gevraagd wordt? Moet ik bijvoorbeeld een CRON-job instellen wat om de zoveel tijd een nieuw wachtwoord in de .htaccess zet? (dus eigenlijk een script wat steeds een nieuwe .htaccess file met steeds een ander wachtwoord creëert?) En dat vervolgens de file waar het paswoord in staat (normaal gesproken .htpasswd) steeds wordt meegestuurd naar de KPN server?
Wat heeft het trouwens voor nut om die paswoord-file mee te sturen naar de KPN server (waar de klant website op staat)? Weet je zeker dat je dit bedoelde? Ik heb al een .htaccess en een .htpasswd op de www.test.nl server. Dus daar moet al worden ingelogd via een wachtwoord. Is dat niet precies hetzelfde als wat jij bedoeld? (behalve dat mijn wachtwoord éénmalig wordt ingesteld, en niet steeds random opnieuw)
Nogmaals dank voor je hulp!!
Het maakt niet precies uit je het aanpakt als je maar een random wachtwoord gebruikt
op de htacces. Dit kun je denk ik wel het beste aanpakken met cron job. Maar wat ik bedoel is:
Je hebt een bestand op de KPN server(maakt steeds een random getal(elke 30 sec ofzo)).
.htacces op www.test.nl leest daar het random getal uit.
En dan zet je het random getal in een variabele zodat de KPN er gewoon in kan zonder dat er een levend wezen weet wat dit wachtwoord is. Hoop dat ik het wat duidelijker heb uitgelegt :)
De site hieronder zal ik woensdag eventjes duidelijk laten zien wat ik bedoel. Heb dan pas weer tijd dus denk dat je het verder even zelf zal moeten doen.
Vandesteeg.org