|
Categorieën >
PHP
Download beveiligen
tomwellink – 08/09/2010 12:05 (Laatst gewijzigd op 08/09/2010 12:06)
|
|
offline
|
Nieuw lid
|
Beste,
Ik heb onderstaande code om wallpapers te downloaden vanaf mijn website, helaas is het hierdoor ook mogelijk om php bestanden uit andere mappen te downloaden waardoor ik een beveiligingslek heb.
Plaatscode: 139954
Nu weet ik dat met arrays het mogelijk moet zijn om dit uit te schakelen, bijvoorbeeld de array om bepaalde bestandstypen toe te staan:
Plaatscode: 139955
en om bijvoorbeeld maar bepaalde mappen toe te staan:
Plaatscode: 139956
Ik heb alleen geen idee hoe ik dit nu in mijn script verder in kan bouwen, welke volgorde ik dan aan moet houden. |
4 antwoorden
|
|
|
pinquin – 08/09/2010 15:16 (Laatst gewijzigd op 08/09/2010 15:18)
|
|
offline
|
HTML interesse
|
Hoi tomwellink,
Ik denk dat het handig is als je niet direct 'down' uit de url gebruikt om het gevraagde bestand te downloaden.
Je zou bijvoorbeeld alle wallpapers in één map kunnen zetten en dan de wallpapers per categorie in mappen verdelen.
Op deze manier weet je dat er maar uit 1 map gedownload kan worden en kan je die dus ook statisch in je script zetten.
$bestand = "/wallpapers/" . $_GET['down'];
$bestand = "/wallpapers/" . $_GET['down'];
Ook kan je dan met vastgestelde categorieën de download verder begeleiden b.v. 'natuur'
$bestand = "/wallpapers/" . $_GET['categorie'] . "/" . $_GET['wallpaper'];
$bestand = "/wallpapers/" . $_GET['categorie'] . "/" . $_GET['wallpaper'];
Daarnaast zou je ook kunnen controleren of de categorie wel bestaat door te kijken of ze in een array voorkomen.
<?php
$categorieArray = array( 'natuur', 'cars', 'fantasy' );
if( in_array( $_GET['categorie'], $categorieArray) ) {
//Controleer of het bestand wel op de server staat
if( file_exists( "/wallpapers/" . $_GET['categorie'] . "/" . $_GET['wallpaper'] ) ) {
//Het bestand bestaat, dus hier kan de download code komen te staan.
}
}
?>
<?php $categorieArray = array( 'natuur', 'cars', 'fantasy' ); if( in_array( $_GET['categorie'], $categorieArray) ) { //Controleer of het bestand wel op de server staat if( file_exists( "/wallpapers/" . $_GET['categorie'] . "/" . $_GET['wallpaper'] ) ) { //Het bestand bestaat, dus hier kan de download code komen te staan. } } ?>
Een hele andere oplossing zou kunnen zijn om alle wallpapers in een database op te slaan en vandaar uit een directe bestandslocatie doorgeven die wordt gedownload, maar dan gooi je het over een hele andere boeg.
Succces
gr,
|
GJ2086 – 08/09/2010 15:17 (Laatst gewijzigd op 08/09/2010 15:18)
|
|
offline
|
Nieuw lid
|
 te laat ...
pinquin was me net voor
|
|
|
|
offline
|
Nieuw lid
|
Hey,
Het punt is dat ik voor verschillende systemen wallpapers wil laten dowloaden, dus je hebt bijvoorbeeld map ipad met daarin de map ipad en thumb en de map iphone met daarin iphone3, iphone4 en thumb, zou dit dan ook met een array kunnen of?
|
Maarten – 08/09/2010 17:08 (Laatst gewijzigd op 08/09/2010 17:10)
|
|
offline
|
Erelid
|
Ja... je zou naast categorieën gewoon een systeem parameter kunnen nemen:
bv:
download.php?sys=iphone/iphone3&cat=natuur&bestand=weiland
Dat is dan bv.
/wallpapers/iphone/iphone3/natuur/weiland.jpg
Dus dat wordt dan
if(file_exists('/wallpapers/ ' . $_GET['sys'] . '/enzovoort voor andere parameters.jpg')) {
// download code
}
Let op, je zou kunnen download.php?sys=iphone/..&cat=.&bestand=config.php gebruiken, daarom dat je best ook de extensie niet meegeeft in de URL en bv. alles in PNG/JPG/whatever opslaat. Of daar dan gaat kijken met een array van extensies of de extensie wel een afbeelding is.
|
Dit onderwerp is gesloten.
|
|
|