Neuigkeiten
  • Die modified eCommerce Shopsoftware ist kostenlos, aber nicht umsonst.
    Spenden
  • Damit wir die modified eCommerce Shopsoftware auch zukünftig kostenlos anbieten können:
    Spenden
  • Thema: Fehler in class.inputfilter.php ?

    guest1552

    • Gast
    Fehler in class.inputfilter.php ?
    am: 28. Februar 2010, 14:00:23
    Hallo,

    in der class.inputfilter.php sind in der Funktion "process" meiner Meinung nach ein Fehler und ein paar konzeptionelle Schwächen enthalten.

    Bei den folgenden Zeilen fehlen die geschweiften Klammern um den eigentlichen foreach Block. Dies hat zur Folge, dass immer nur der erste Eintrag des $_GET oder $_POST usw. Array ausgewertet wird.

    Code: PHP  [Auswählen]
    77                      // clean all elements in this array
    78                      if (is_array($source)) {
    79                              foreach ($source as $key => $value)
    80                                  // filter element for XSS and other 'bad' code etc.
    81                                  $tmp_key = $key;
    82                                  unset ($source[$key]);
    83                                  $key = $this->remove($this->decode($key));
    84                                  if ($key != $tmp_key) {
    85                                      return $source;
    86                                  } else {
    87                                      if (is_string($value)) {
    88                                          $source[$key] = $this->remove($this->decode($value));
    89                                      } elseif (is_array($value)) {
    90                                          $source[$key] = $value;
    91                                      }
    92                                  }
    93                              return $source;
    94                              // clean this string
    95                      } else
    96                          if (is_string($source)) {
    97                              // filter source for XSS and other 'bad' code etc.
    98                              return $this->remove($this->decode($source));
    99                              // return parameter as given
    100                         } else
    101                             return $source;
     
    Es müsste heissen:

    Code: PHP  [Auswählen]
    77                      // clean all elements in this array
    78                      if (is_array($source)) {
    79                              foreach ($source as $key => $value){
    80                                  // filter element for XSS and other 'bad' code etc.
    81                                  $tmp_key = $key;
    82                                  unset ($source[$key]);
    83                                  $key = $this->remove($this->decode($key));
    84                                  if ($key != $tmp_key) {
    85                                      return $source;
    86                                  } else {
    87                                      if (is_string($value)) {
    88                                          $source[$key] = $this->remove($this->decode($value));
    89                                      } elseif (is_array($value)) {
    90                                          $source[$key] = $value;
    91                                      }
    92                                  }
                                    }
    93                              return $source;
    94                              // clean this string
    95                      } else
    96                          if (is_string($source)) {
    97                              // filter source for XSS and other 'bad' code etc.
    98                              return $this->remove($this->decode($source));
    99                              // return parameter as given
    100                         } else
    101                             return $source;
     
    Ausserdem frage ich mich, ob es Sinn macht, die Verarbeitung des Arrays abzubrechen, wenn ein "malformed" Key gefunden wurde (Zeile 84+85). Das heisst, alle weiteren Werte werden nicht mehr überprüft.
    So ähnlich verhält es sich in den Zeilen 89+90. Wenn $value ein Array ist, dann wird es ungeprüft zurückgegeben.

    Sehe ich das so richtig? Wenn ja, dann müsste diese Routine dringend überarbeitet werden.

    Grüße

    Harvey



    Linkback: https://www.modified-shop.org/forum/index.php?topic=4283.0
    Modulshop - Eine große Auswahl an neuen und hilfreichen Modulen für die modified eCommerce Shopsoftware

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Fehler in class.inputfilter.php ?
    Antwort #1 am: 14. März 2010, 20:32:58
    Danke, die Klammer bei foreach sollte unbedingt mit rein!

    jannemann

    • modified Team
    • Beiträge: 6.275
    • Geschlecht:
    Fehler in class.inputfilter.php ?
    Antwort #2 am: 15. März 2010, 08:04:14
    das sollte sich torsten noch angucken und dann sollte das in der modified-version gefixt werden.

    schöne grüße,
    jan

    web28

    • modified Team
    • Beiträge: 9.404
    Fehler in class.inputfilter.php ?
    Antwort #3 am: 15. März 2010, 10:11:58
    Die Datei wurde bereits gefixt (Changeset 798,799)

    Hier die gefixte Version:

    DokuMan

    • modified Team
    • Beiträge: 6.669
    • Geschlecht:
    Fehler in class.inputfilter.php ?
    Antwort #4 am: 15. März 2010, 12:26:51
    Nein, die Klammer hat noch gefehlt.
    Hetfield war so nett und hat das ergänzt in r820.

    2 Antworten
    4019 Aufrufe
    08. Januar 2009, 19:21:41 von Anonym
    4 Antworten
    3623 Aufrufe
    05. Mai 2011, 21:57:54 von Tomcraft
               
    anything