$_GET beveiligen

This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

  • Beste ik weet niet wat je exact bedoelt maar er is een heel stuk waarmee je $_GET kan beveiligen.

    PHP Source Code

    1. <?php
    2. function beveilig($sInput) {
    3. $sOutput = '';
    4. if(!get_magic_quotes_gpc() == 0) {
    5. $sOutput = $sInput;
    6. } else {
    7. if(function_exists('mysql_real_escape_string')) {
    8. $sOutput = mysql_real_escape_string($sInput);
    9. } else {
    10. $sOutput = addslashes($sInput);
    11. }
    12. }
    13. $sOutput = htmlentities($sOutput, ENT_QUOTES);
    14. return $sOutput;
    15. }
    16. function beveilig_array($aInput) {
    17. if(!is_array($aInput)) {
    18. return false;
    19. }
    20. $aOutput = array();
    21. foreach($aInput as $iKey => $sValue) {
    22. if(is_array($sValue)) {
    23. $aOutput[beveilig($iKey)] = beveilig_array($sValue);
    24. } else {
    25. $aOutput[beveilig($iKey)] = beveilig($sValue);
    26. }
    27. }
    28. return $aOutput;
    29. }
    30. $_POST = beveilig_array($_POST);
    31. ?>
    Display All


    Hopelijk heb je er iets aan.

    Mvg PG
    \"Je kan stoer lopen met 100 matties om je heen
    aan het einde ga je toch alleen heen!\"
  • @pg
    Als je mysql niet gebruikt krijgt mysql_real_escape_string een error (tenminste vroeger) dus daarom kan je beter add_slashes gebruiken.

    Als je het zo bekijkt inderdaad wel ja.
    Ik weet niet of dit nog altijd is maar wss wel.
    Tnx Niels :)

    Mvg PG
    \"Je kan stoer lopen met 100 matties om je heen
    aan het einde ga je toch alleen heen!\"
  • Hier worden enkele 'algemene' oplossingen gegeven. Maar in mijn ogen zijn deze oplossingen slordig en niet goed. Ze zijn zeker niet altijd veilig.

    Een GET, POST of COOKIE variabele moet je valideren naar wat je van de variabele verwacht. Moet de variabele een getal zijn, kijk dan of het ook een getal is. Moet de variabele een geldige link zijn, kijk daar dan na. Er is geen algemene oplossing om alle GET waardes in één keer te beveiligen. Daarnaast is overal slashes overheen gooien slordig. Tenslotte, als iets over de mail gaat (bijvoorbeeld), moet de variabele helemaal geen slashes kennen.

    En mysql_real_escape_string is niet bruikbaar wanneer er geen mysql resource is omdat mysql_real_escape_string rekening houd met de encoding van de database..

    Dus: Valideren doe je aan de hand van het (verwachte) type input. En niet met een algemene functie...
  • Dit is de allerbeste:

    PHP Source Code

    1. <?php
    2. $_GET = array_map('add_slashes', $_GET);


    Zo kan je er eventueel ook nog htmlentities doorhalen enz.

    PHP Source Code

    1. <?php
    2. $_GET = array_map('htmlentities', $_GET);