login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Download beveiligen

Offline tomwellink - 08/09/2010 12:05 (laatste wijziging 08/09/2010 12:06)
Avatar van tomwellinkNieuw 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

Gesponsorde links
Offline pinquin - 08/09/2010 15:16 (laatste wijziging 08/09/2010 15:18)
Avatar van pinquin 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.

  1. $bestand = "/wallpapers/" . $_GET['down'];

Ook kan je dan met vastgestelde categorieën de download verder begeleiden b.v. 'natuur'
  1. $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.
  1. <?php
  2. $categorieArray = array( 'natuur', 'cars', 'fantasy' );
  3. if( in_array( $_GET['categorie'], $categorieArray) ) {
  4. //Controleer of het bestand wel op de server staat
  5. if( file_exists( "/wallpapers/" . $_GET['categorie'] . "/" . $_GET['wallpaper'] ) ) {
  6. //Het bestand bestaat, dus hier kan de download code komen te staan.
  7. }
  8. }
  9. ?>


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,
Offline GJ2086 - 08/09/2010 15:17 (laatste wijziging 08/09/2010 15:18)
Avatar van GJ2086 Nieuw lid   te laat ...
pinquin was me net voor  
Offline tomwellink - 08/09/2010 17:02
Avatar van tomwellink 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?
Offline Maarten - 08/09/2010 17:08 (laatste wijziging 08/09/2010 17:10)
Avatar van Maarten 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.
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.202s