?p=
Hoe krijg ik links van ?p= de bestanden staan in pages/
Wat wil je?
- Wat heb je gezocht?
- Verzin eens een betere titel
- Doe iets meer moeite
- Hoe zou jij het doen?
- Waar kom je niet uit?
- enz?
- - Wat heb je gezocht?
- Verzin eens een betere titel
- Doe iets meer moeite
- Hoe zou jij het doen?
- Waar kom je niet uit?
- enz?
Gewijzigd op 21/02/2012 19:27:29 door Wouter J
Wouter, je snapt er duidelijk niks van. Voor dit soort zaken hebben wij een glazen bol.
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 - Ariën -
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
Gewijzigd op 21/02/2012 19:56:31 door Jeroen VD
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,!
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.
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.
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
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.
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.
Wat ik toch altijd aanraad:
Zet de mogelijkheden in een switch, eventueel in een array
bv.
?p=/pages/PAGINA doen.
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.
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
Als je dat aanpast krijg je dit:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
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";
}
?>
$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 Vlaswinkel
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 ? -.-
@pepijn ik heb dit script ook pas vandaag gemaakt hoor, want ik.had het even nodig. Graag gedaan hoor