Versio

?p=

Overzicht Reageren

Pepijn ---

pepijn ---

21/02/2012 19:14:26
Quote Anchor link
Hoe krijg ik links van ?p= de bestanden staan in pages/
 
PHP hulp

PHP hulp

25/05/2012 09:26:26
Gesponsorde koppelingen:
 
Wouter J

Wouter J

21/02/2012 19:20:03
 
Jeroen vd

jeroen vd

21/02/2012 19:34:16
Quote Anchor link
Wouter, je snapt er duidelijk niks van. Voor dit soort zaken hebben wij een glazen bol.
 
- Aar -

- Aar -

21/02/2012 19:45:36
Quote Anchor link
En zie dit topic:
klik.

En beste Pepijn, als ik jouw post-historie zie, dan zijn je problemen zeer beperkt omschreven, en soms kant-noch-wal raken.

Zou je in het vervolg eens wat moeite willen doen om zo duidelijk mogelijk je probleem te omschrijven, en dan ook voorbeelden te geven.

Dat bespaart ons een hoop moeite, vraagtekens boven onze hoofden, en onnodig kritiek op jouw.
Gewijzigd op 21/02/2012 19:50:38 door - Aar -
 
Wouter J

Wouter J

21/02/2012 19:49:35
Quote Anchor link
@Jeroen, ik begrijp het heel goed. Als pepijn net zoveel moeite had gedaan als de meeste mensen hier zou hij van mij zo een antwoord krijgen. Want eerlijk gezegd begrijp ik niet veel van zijn vraag...
En als je goed kijkt zie je dat er 2 linkjes tussen staan die direct antwoord geven op wat hij vraagt, als ik het goed begrepen heb.
Gewijzigd op 21/02/2012 19:51:18 door Wouter J
 
Jeroen vd

jeroen vd

21/02/2012 19:55:24
Quote Anchor link
Zover had ik nog niet gekeken.... Maar mijn opmerking was meer sarcastisch bedoelt.
Gewijzigd op 21/02/2012 19:56:31 door jeroen vd
 
Bas  van de Steeg

Bas van de Steeg

21/02/2012 21:03:54
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo 'pages/'.$_GET['p'].'.php';

Je weet nu hoe het in elkaar zit. De rest eromheen kun j zelf denk ik wel.
Wat ik begrijp uit je vraag is;":
Als ik via ?p= mijn pagina's gebruik hoe kan ik dan zorgen dat de pagina's die include worden in de map pages staan dus.
?p=contact include pages/contact.php
De kans dat de vraag zoals ik hem begrijp fout is is groot. De vraag kan wel wat uitgebreider,!
 
Wouter J

Wouter J

21/02/2012 21:52:33
Quote Anchor link
@Bas, nooit zomaar iets include vanuit een variabele die een gebruiker kan aanpassen. Altijd eerst controleren of de waarde wel gelijk is aan iets wat jij denkt dat het is.

Voorbeeldje:
Je gebruikt de code zoals jij hierboven hebt, alleen dan een include i.p.v. een echo. Nu maakt de gebruiker dit van je url:
domain.com/page.php?p=../verboden/passwords.php

Nu kan de gebruiker gewoon in de map verboden/passwords.php komen, iets waar jij het nooit wilt.
 
Frank WD

Frank WD

21/02/2012 22:17:39
Quote Anchor link
@Wouter,

Dit stukje van jou heeft me even aan denken gezet.
Nu gebruik ik een dergelijk stukje code ook waarmee ik zeg maar krijg.
index.php?p=home hiermee krijg ik dus uit mijn mapje pages de pagina home.php na voren. Maar ik kan niet zeg maar uit mapje verboden iets uithalen. want index.php?p=passwoord.php zal niet lukken ivm hij in mapje verboden staat en niet in pages.

Nu heb jij over een soort van beveiliging inbouwen.
Heb je hier toevallig een linkje van zodat ik deze eens kan bekijken hoe en wat.
Want we staan bijna voor de deur tot nieuw lay-out waar we enige dingen willen veranderen kwa table en zo. Dan zouden we dit van jou eventueel bij mee kunnen nemen. Daarom zijn we nu al info aan verschaven over hoe en wat.
 
Jens erd

Jens erd

21/02/2012 22:44:01
Quote Anchor link
Wouter J op 21/02/2012 21:52:33:
Voorbeeldje:
Je gebruikt de code zoals jij hierboven hebt, alleen dan een include i.p.v. een echo. Nu maakt de gebruiker dit van je url:
domain.com/page.php?p=../verboden/passwords.php


Test het voortaan even voordat je het op het internet gooit, dit werkt namelijk simpelweg niet. Php leest het letterlijk: vul jij '../verboden/' in dan gaat hij zoeken naar de map '../', die bestaat niet en dus krijg je een Warning. In dit geval is het belangrijk dat de gebruiker de pagina's in een andere map heeft staan en daarmee Include File Injection uitsluit.

Desalniettemin is het toch handig dat je de boel dichttimmert, vult een gebruiker namelijk file.txt%00 in dan krijgt hij in dit geval toegang tot file.txt (mits magic_quotes_gpc op off staat). controleren of de variabele alleen uit tekst bestaat zou een stap in de goede richting zijn.
 
Bas  van de Steeg

Bas van de Steeg

22/02/2012 07:17:37
Quote Anchor link
Wouter "Je weet nu hoe het in elkaar zit. De rest eromheen kun je zelf denk ik wel."!
Hiermee geef ik aan dat dit niet juist is maar ik geef aan hoe hij dit zou kunnen gebruiken. Ook ziet hij nu hoe de bestanden uit een andere dir worden gelezen. Dus kan hij zelf neem ik aan wel maken dat niet elk bestand include wordt. :) Maar je hebt wel gelijk hoor had het er iets beter bij moeten zetten.
 
Kris Peeters

Kris Peeters

22/02/2012 09:56:25
Quote Anchor link
Bas van de S op 21/02/2012 21:03:54:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo 'pages/'.$_GET['p'].'.php';


Wat ik toch altijd aanraad:
Zet de mogelijkheden in een switch, eventueel in een array

bv.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
switch ($_GET['p']) {
  'kalender':
  'gastenboek':
  'forum':
    echo 'pages/'.$_GET['p'].'.php';
    break;
  default:
  
    echo 'pages/home.php';
    break;
}

?>
 
Bas  van de Steeg

Bas van de Steeg

22/02/2012 17:18:11
Quote Anchor link
Zo doe ik het ook maar ik heb hem gewoon laten zien hoe hij kan zorgen dat het uit een bepaalde map kan lezen. Het dat is zijn vraag :) Hij kan natuurlijk ook gewoon
?p=/pages/PAGINA doen.
 
- Raoul -
Redacteur

- Raoul -

22/02/2012 17:21:00
Quote Anchor link
Kris, waarom zo omslachtig? Je kan ook gewoon een array maken van de pages folder en dan kijken of je $_GET['p'] waarde in die array zit.
 
Koen V

Koen V

22/02/2012 19:07:41
Quote Anchor link
Ik gebruik zelf dit script om broncode te laten zien:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$file
= $_GET['file'];
$files = scandir("");
$filtered = array(".", "..", "index.php", "source.php");
foreach ($files as $key => $value)
{

    if (in_array($value, $filtered))
    {

        unset($files[$key]);
    }
}

if (in_array($file, $files))
{

    highlight_file($file);
}

else
{
    echo "File not found";
}

?>

Als je dat aanpast krijg je dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
$file
= $_GET['p'];
//het hele pad zoals /home/gebruiker/public_html
$files = scandir("");
// hier kan je bestanden inzetten die niet geinclude mogen worden, je moet zeker.  en .. erin laten
$filtered = array(".", "..", "index.php", "source.php");
// de bestanden uit $filtered verwijderen
foreach ($files as $key => $value)
{

    if (in_array($value, $filtered))
    {

        unset($files[$key]);
    }
}

if (in_array($file, $files))
{

    include $file;
}

else
{
    echo "Niet gevonden";
}

?>
Gewijzigd op 22/02/2012 19:10:25 door Koen V
 
Bas  van de Steeg

Bas van de Steeg

22/02/2012 19:17:30
Quote Anchor link
@koen,

Jij snapt wat ik bedoel met mijn eerste reactie ;-)

Toevoeging op 22/02/2012 19:18:38:

Btw: Pepijn leest zelf dit topic niet meer ? -.-
 
Koen V

Koen V

22/02/2012 19:19:30
Quote Anchor link
@pepijn ik heb dit script ook pas vandaag gemaakt hoor, want ik.had het even nodig. Graag gedaan hoor
 



Overzicht Reageren