[php]sicherheitslücke wenn der user ein array key festlegen kann?



  • bei sql muss man ja die eingaben des users prüfen wegen der sql-incetion gefahr, ist das vielleicht auch ein problem bei php wenn ich user eingaben ein array key benutze?

    z.b.

    $foo = array('hallo', 'bla');
    
    echo($foo[$_GET['bar']]);
    

    valide werte für bar wären 0 oder 1
    kann der user irgend etwas in $_GET['bar'] einfügen das problematisch ist?



  • foo.php?bar=2

    Klar kann der User, und deshalb musst man auch pruefen! Egal ob get, post, cookies, sessions...



  • SG1 schrieb:

    foo.php?bar=2

    Klar kann der User, und deshalb musst man auch pruefen! Egal ob get, post, cookies, sessions...

    und was soll passieren, wenn bar jetzt 2,3 oder 65536 ist?



  • otze schrieb:

    SG1 schrieb:

    foo.php?bar=2

    Klar kann der User, und deshalb musst man auch pruefen! Egal ob get, post, cookies, sessions...

    und was soll passieren, wenn bar jetzt 2,3 oder 65536 ist?

    Dann gibt's einen Laufzeit-/ Parserfehler, zumindest wenn der Array-Index dann nicht kein integer mehr ist (oder als ein solcher interpretierbar). Abgesehen von Prüfen kann aber auch ExceptionHandling nicht schaden!

    In der Regel wird aber rein GAR NICHTS passieren, da er ja in seinem Script auf $bar und nicht auf $_GET['bar'] zugreift!



  • eg geht mir auch darum das ich des öffternen sowas habe

    <input type="text" name="person[vorname]" />
    <input type="text" name="person[nachname]" />
    

    das ganze landet dann als array in $_GET['person']['vorname'] $_GET['person']['nachname'] so eine art OOP, nun könnte aber jemand böswiliges den html-quelltext nähmen und so was machen

    <input type="text" name="person[array_incection_die_ihn_erlaubt_etwas_außerhalb_von_person_zu_lesen]" />
    <input type="text" name="person[nachname]" />
    


  • Was soll passieren, solange man die Variable in der SQL-Anfrage maskiert (z.B. mit mysql_real_escape_string) ?



  • geeky schrieb:

    Was soll passieren, solange man die Variable in der SQL-Anfrage maskiert (z.B. mit mysql_real_escape_string) ?

    Es geht hier doch gar nicht um SQL 😉

    Aber ich denke nicht, dass man damit etwas böses anstellen kann - Achtung: nur Vermutung 🤡



  • (Huch, hab mal wieder zu schnell gelesen ;D)


Anmelden zum Antworten