Toon posts:

[PHP] vars maken uit een $_GET array

Pagina: 1
Acties:
  • 42 views sinds 30-01-2008

Verwijderd

Topicstarter
Als ik een $_GET array uitlees met:

code:
1
2
3
4
foreach ( $_GET as $key => $value ) {
 print $key . " " . "=" . " " . $value;
 print "<BR/>";
}


Dan krijg ik een lijst te zien zoals:

Naam = Henk
Straat = Hoofdstraat

Is het mogelijk om met deze informatie een variabele $naam te creeren, en deze de waarde Henk te geven?

  • Mithrandir
  • Registratie: Januari 2001
  • Laatst online: 10-05 16:37
Waarom zou je dat willen? Dit is juist uitgeschakelt omdat het extreem gevaarlijk is. Exploits zijn zomaar gecreeerd met zo'n soort code.

Waarom blijf je geen array gebruiken? Dat is veel veiliger. (Je kunt ook gaan lezen waarom register_globals nu standaard uistaat met PHP)

[ Voor 18% gewijzigd door Mithrandir op 12-03-2005 23:50 ]

Verbouwing


Verwijderd

Topicstarter
Waarom zou dit gevaarlijk zijn, terwijl ik het wel uit het array kan lezen?

OK, ik had een denkfoutje gemaakt, en heb de functie niet nodig nu. Maar ik snap niet waarom dit onveilig zou zijn, en het array opzich niet...

ps, lees de laatste tijd vaak replies als "Waarom? Dat is dom, onveilig, dit, dat" zonder een duidelijke uitleg waarom dat zo is.. Voor zover ik weet bestaan domme vragen niet, en vragen we hier om te leren, toch?

  • _JGC_
  • Registratie: Juli 2000
  • Laatst online: 07:50
Heeft te maken met variabelen die geen initiele waarde krijgen. Stel, je maakt 2 files, a.php en b.php. In b.php zet je een stuk code wat alleen uitgevoerd mag worden als een variabele gezet is, en die wordt dus gezet uit a.php. Het is dan de bedoeling dat a.php de b.php file include.

Leuk en aardig als jij met http://server/b.php?var=waarde alsnog die waarde kunt zetten als webgebruiker... veiligheidslek dus. Wat denk jij hoe het komt dat forums als phpBB zo vaak lek zijn.

Verwijderd

Ja, je kunt er zomaar een lokale variabele variabele of globale variabele mee creëren. Dat kan met:

1: Een variabele variabele, dat ziet er ongeveer uit als ${$key} = $value;
2: Een globale variabele: $GLOBALS[$key] = $value;

Maar... je hebt toch al gewoon een variabele? Die zit namelijk nog gewoon in de $_GET superglobal array. Waarom zou je die niet gebruiken? Doorgeven via een functie?

Op zich hoeven zulke dingen als voorbeeld 1 en 2 geen veiligheidslek op te leveren. Ze zorgen er wel voor dat je vlot het overzicht verliest. Ik zou ze gewoon nooit gebruiken.

Verwijderd

Topicstarter
Maar dan weet de misbruiker de variabele naam toch al, anders heeft het nog geen nut toch? Of mis ik nu een slag?

Verwijderd

Topicstarter
OK, het kan dus wel.. en het is niet meteen een lek.. dat zocht ik.

Het was een denk fout van mij, ik weet in mijn geval de $key al, dus vul de velden van m'n formulier nu gewoon met:

code:
1
<input type=text name="naam" value="<? echo $_GET['naam']; ?>">


De variabelen worden namelijk door het formmail script terug gepost met de naam van het formulier-veld. Ik wou eerst dus alle vars inlezen en dan dit gebruiken:

code:
1
<input type=text name="naam" value="<? echo $naam ?>">


't zal vast nog makkelijker kunnen, maar ik gebruik nog maar heel kort PHP, dus ben al lang blij dat het werkt :D

Bedankt voor de hulp iig!

  • Pelle
  • Registratie: Januari 2001
  • Laatst online: 07:09

Pelle

🚴‍♂️

Ok :)
Pagina: 1

Dit topic is gesloten.