$_GET beveiligen

  • Guest, wil je besparen op je domeinnamen? (ad)
  • Beste ik weet niet wat je exact bedoelt maar er is een heel stuk waarmee je $_GET kan beveiligen.



    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!\"

  • Citaat

    @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
    <?php
    $_GET = array_map('add_slashes', $_GET);


    Zo kan je er eventueel ook nog htmlentities doorhalen enz.

    PHP
    <?php
    $_GET = array_map('htmlentities', $_GET);

  • Maar wat nou, als je beide kan verwachten? Bijvoorbeeld bij een zoek formulier waar je $_GET ipv $_POST variables gebruikt.. dan heb je daar weer een probleempje voor. En de ts zoekt denk ik 1 makkelijke oplossing voor bijvoorbeeld bovenstaand probleem.


    Ikzelf heb een eigen functie gemaakt (Es2008($str) staat voor Everything Safe 2008 :P, en die werkt tot nu toe aardig..)

  • Het beste is gewoon zelf overal addslashes zetten of htmlentities waar je denkt dat het echt van toepassing is (bv. in een query) zo ga je geen onnodige variabelen filteren en minder fouten hebben wat de snelheid en ordelijkheid van je script min of meer zal bevorderen.

  • @Killingdevil#reactie 1
    Volgens mij weet ik wel wat ik doe. htmlentities is voor output niet voor input (in de database mag dus best een < of > staan ;)). Het valideren van user input moet sowieso maar doormiddel van add slashes voorkom je ten eerste al redelijk wat aangezien html tags in de database niks uit maken zoals ik al eerder heb verteld hierboven.


    @Killingdevil#reactie 2
    Uhm als je toch beide wilt nemen kun je net zo goed $_REQUEST gebruiken.

Participate now!

Heb je nog geen account? Registreer je nu en word deel van onze community!