Bestanden op ftp-server beveiligen
Ik heb net ontdekt dat je met een vrij eenvoudig script alle bestanden vanop iemands ftp-site gewoon kan downloaden. En dus ook de config-files waar bijvoorbeeld de gegevens voor database-connectie in staan.
Is er een manier om er voor te zorgen dat dat onmogelijk is?
En is er een manier om er voor te zorgen dat je onmogelijk kan zien welke bestanden er in een bepaalde map zitten? (bv dat je niet kan opvragen welke html-files er allemaal in de map "webpages" zit)
Bedankt!
Ja, een gebruikersnaam en wachtwoord op je FTP zetten.
In het eerste geval kan je toch nog steeds de config.php downloaden via bijvoorbeeld:
---1.php----
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$file=$_GET['file'];
if(is_file($file)){
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".basename($file).";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
readfile($file);
}
?>
$file=$_GET['file'];
if(is_file($file)){
header("Pragma: public");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Content-Type: application/force-download");
header("Content-Type: application/octet-stream");
header("Content-Type: application/download");
header("Content-Disposition: attachment; filename=".basename($file).";");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".filesize($file));
readfile($file);
}
?>
en dan als linkje
<a href='1.php?file=config.php'>link</a>
Dit heeft niks met een FTP te maken. Wat is nu eigenlijk je probleem... Je creëert een onveilig script en daardoor kun je onveilige dingen doen?
Je kunt geen PHP files downloaden via HTTP. Dit is expres zo gedaan.
True, maar ik vroeg me af, stel dat iemand een soort gelijks script gebruikt, en hij weet mijn config.php staan, kan die dan niet op dezelfde manier dat bestand downloaden? Want via dat script is het dus mogelijk...
M.a.w.: er moet toch ergens een script bestaan waar je kan invoeren: download mij de file "http://www.websiteadres.nl/direcorty/config.php" . En als dat mogelijk is, hoe kan ik mij daar dan tegen beveiligen?
Net zoals een class zelf geen output heeft.
Dus dan is er niets aan de hand.
PHP-bestanden worden alleen uitgevoerd (dus de html!) doorgestuurd naar andere gegevens.
maar je kan config enkel uitgevoerd downloaden als het script op een andere website zou staan?
Normaal beveilig je de boel door alleen bestanden uit een bepaalde map te laten downloaden.
Je kunt alleen downloaden met dat script van je eigen server. Het is dus niet mogelijk dat ik een scriptje bouw en jou files download (tenzij ik FTP login gegevens heb).
Concreet was ik dus op zoek naar het antwoord van Jurgen, mijn vraag misschien een beetje slecht verwoord, mijn excuses :) .
Een bijkomend vraagje: is het mogelijk dat iemand met één of ander scriptje of via een special google search ziet welke bestanden je hebt staan op je server (zonder ze te kunnen downloaden). M.a.w. dat men kan zien: de map "map1" bevat de mappen "map4" en "map6" en de bestanden "about.html" en "inlog.php".
Thx again!
Dat kun je allemaal zelf instellen in Apache, zie htmlleren.nl oid
Daardoor kan je ze juist downloaden. Best logisch toch... Je wilt ze zelf weergeven. Als je wilt dat mensen niets kunnen downloaden.. Zet het dan gewoon niet online.
Het zit zo, ik wil elke dag een andere afbeelding laten zien via een redelijk simpel php-ding dat ik gemaakt heb.
Nu heb ik een folder met daarin al mijn afbeeldingen, dag 1 moet afbeelding "1343442.jpg" verschijnen, dag 2 "15382042.jpg" enzovoort. Maar het is vrij belangrijk dat iemand op dag 1 de afbeelding van dag 2 nog niet kan zien (maar deze afbeelding is uiteraard wel al upgeload op de server).
Ik heb de afbeeldingen random genoemd dus door te gokken kom je er (zo goed als) nooit, maar als iemand kan zien welke bestanden allemaal in die map zitten, dan heb ik een probleem, want dan kan die op dag 1 ook afbeelding "15382042.jpg" bekijken door gewoon in de browser: http://www.mijnsite.nl/random/15382042.jpg te tikken.
Gewijzigd op 01/01/1970 01:00:00 door Sure Is
in .htaccess of apache2.conf/httpd.conf
Hierdoor kun je niet meer zien welke files er zijn (behalve index.html/php etc..)
Dit is echter op mijn server zowieso al het geval, ook zonder Options -Indexes in .htaccess te plaatsen...
Ik vraag me dus eigenlijk gewoon af: kan iemand op één of andere manier op dag 1 te weten komen dat er op de server nog afbeeldingen staan (die pas te zien zullen zijn op dag 2). De afbeelding voor dag 2 heeft uiteraard CHMOD 755 aangezien ze op dag 2 bekijkbaar moet zijn...
Gewijzigd op 01/01/1970 01:00:00 door Sure Is
Als je afbeelding 2 niet op dag 1 wil laten zien moet je dus chmodden naar 700. Maar dit boeit niet. Als jij random filenames hebt dan gaat niemand maar even voor de lol raden hoe dat bestand nou zou kunnen heten, door 10000x de urlbalk te veranderen.