login  Naam:   Wachtwoord: 
Registreer je!
 Forum

URL beveiligen

Offline Pellens - 16/07/2009 15:13
Avatar van PellensPHP interesse Beste sitemasters,

ik had een vraag over het beveiligen van variabelen meegegeven met de url.

BV: index.php?pagina=naam

Bij het gebruiken van "naam", op wat kan je best allemaal beveiligen?
Reeds gebruikt: mysql_real_escape_string();

Groeten!

7 antwoorden

Gesponsorde links
Offline Flex1986 - 16/07/2009 15:23
Avatar van Flex1986 Gouden medaille

Senior Member
Heb je een voorbeeld wat je er mee wil gaan doen. Als je het gaat gebruiken om te includen dan is het door een switch te halen en daaruit juiste pagina voldoende dan is mysql_real_escape overbodig.

Ga je werken met je database dan is mysql_real_escape wel aan te raden inderdaad.
Offline avdg - 16/07/2009 15:25 (laatste wijziging 16/07/2009 15:27)
Avatar van avdg PHP gevorderde indien je include gebruikt, altijd controleren of de pagina geldig.

Dit doe je meestal met een array met de toegelaten publieke pagina's

bv.

  1. switch($_GET['pagina']) {
  2. case 'index':
  3. case 'home':
  4. case 'andere_paginas':
  5. $ok = true;
  6. break;
  7. default:
  8. $ok = false;
  9. }


flex was voor 
break; vergeten, oops
Offline Pellens - 16/07/2009 15:28
Avatar van Pellens PHP interesse Inderdaad, dit wist ik want dat is nodige basiskennis.
Maar zijn er verdiepingen?
Offline Richard - 16/07/2009 15:58
Avatar van Richard Crew algemeen mysql_real_escape_string gebruik je bij input.
htmlspecialchars (nooit htmlentities) gebruik je bij output.
bij intern gebruik altijd kijken of het geldig is (geen externe naam bijvoorbeeld).

Dat was het eigenlijk wel :-)
Offline avdg - 16/07/2009 16:11 (laatste wijziging 19/07/2009 12:07)
Avatar van avdg PHP gevorderde Zou ik oplossen met een array en recursie (functie die zichzelf aanroept):

  1. $toegelaten_paginas = array('pagina1', 'pagina2',
  2. 'pagina3' => array('pagina3a', 'pagina3b'));
  3.  
  4. function valid_page($pages, $allowed)
  5. {
  6. switch (gettype($pages)) {
  7. //splitsen indien nodig
  8. case 'string':
  9. $pages = explode('/', $pages);
  10. case 'array':
  11. break;
  12. default:
  13. return false;
  14. }
  15. if (!is_array($allowed)) {
  16. return false;
  17. }
  18.  
  19. $page = array_shift($pages);
  20. if ($allowed != $pages) {
  21. return false; //Geen match
  22. }
  23.  
  24. //zijn er nog elementen over?
  25. if(empty($pages)) {
  26. return true;
  27. } else {
  28. return valid_page($pages, $allowed[$page]); //zichzelf aanroepen
  29. }
  30. }
  31.  
  32. valid_page($_GET['pagina'], $toegelaten_paginas);

nota: pagina3 is wel een array, maar de pagina zou volgens de code bestaan 

Code is wel niet getest, eerder rap geschreven 
Ik denk zelfs dat er beter methodes zijn

fouten? geef een seintje  

edit: ty henver, code is wat bijgewerkt en nagekeken
Offline henver - 16/07/2009 17:25
Avatar van henver HTML gevorderde Regel 16: waar definieer je pages?
Schoonheidsfoutje: allowed
Offline Martijn - 18/07/2009 19:41 (laatste wijziging 18/07/2009 19:44)
Avatar van Martijn Crew PHP
  1. $mogelijkheden=array('home','overMij','portfolio','mijnDiensten','contact');
  2. $_GET['p'] = isset($_GET['p']) ? $_GET['p'] : "home"; // als er geen waarde is 'home geven'
  3. $_GET['p'] = in_array($_GET['p'],$mogelijkheden) ? $_GET['p'] : "home";


dat is toch veel simpeler? zet je gewoon boven aan je bestand, en t werkt perfect.

@ henver: die defineerd ie in zn functie inputs(r4) 
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.184s