j4nk3y: Update einer Chatfunktion

Beitrag lesen

Moin!

Auf das man es an einer Stelle vergisst... Jede Eingabe von einem Benutzer ist potentiell gefährlich, darum muss man das ja machen.

Das ist der große Irrtum, der leider immer wieder so gepredigt wird und dann zu falschen Schlüssen führt. Die Eingabedaten sind nicht gefährlich, sie explodieren nicht einfach so, oder machen von sich aus irgendwelche gefährlichen Dinge. Es sind die Ausgabedaten, bei denen vergessen wurde, sie für den Ausgabekontext zu behandeln. Und es ist dabei völlig unerheblich, ob die Daten aus einer Eingabe oder aus einer anderen Quelle stammen - wenn sie Sonderzeichen enthalten können, müssen diese maskiert werden, oder was auch immer der aktuelle Kontext vorsieht.

Sicher explodieren sie nicht von alleine, sie explodieren ja nur wenn das von dem Benutzer beabsichtigt ist. Sprich XSS oder irgendwas anderes was ich nicht kenne.

Und warum dann nicht Zentral für alles was ankommt? Naja wenn es gesagt wird, dann setzt der Leie das so um.

Deswegen ist das ja auch nicht gut, wenn man das dem Laien immer so falsch erklärt. In deinem Beispiel gibst du die Daten direkt in Richtung SQL aus. Abgesehen davon, dass man mit Prepared Statements keine Behandlung mehr braucht ... stell dir mal vor, du nimmst die Daten und prüfst sie erst auf fachliche Richtigkeit. Du stellst nun fest, dass da Fehler drin sind, die der Anwender erstmal beseitigen muss, bevor sie gespeichert werden können. Also baust du ein Affenformular, das die Daten solange wieder in ein HTML-Formular schreibt und dem Anwender zurückgibt, bis sie korrekt sind. Solange gilt als Kontext HTML und erst dann gilt der Kontext SQL. Es nützt dir also nichts, beziehungsweise macht mehr Probleme als es löst, wenn du gleich am Eingang die SQL-Behandlung vornimmst. Das fügt zum Beispiel Backslashes vor Anführungszeichen, obwohl das in HTML " sein muss (nicht immer, aber in Attributwerten, und anderswo schadet es auch nicht).

Das Argument, man dürfe die Behandlung nicht vergessen ist insoweit richtig. Aber das muss man sich für die Ausgabe angewöhnen. "Jegliche Daten müssen dem Ausgabekontext entsprechend angepasst werden." Das ist der einfache Grundsatz. Der Teufel liegt dann jedoch mitunter im Detail, weil gelegentlich mehrere Kontext geschachtelt werden müssen. Daten, die in einer URL transportiert werden sollen, und die ihrerseite im HTML-Code steht, ist so ein geschtelter Fall. Das braucht zwei Behandlungen. Die Daten brauchen eine URL-gerechte Umformung, und die URL selbst muss HTML-Konform sein. Wir haben da im Wiki einen Artikel zum Kontextwechsel, der recht viele der im Webumfeld vorkommenden Kontexte beleuchtet.

Danke für den Hinweis.

Gruß Jo

0 151

Update einer Chatfunktion

j4nk3y
  • html
  • javascript
  • php
  1. 2
    Felix Riesterer
    • datenbank
    • php
    • sicherheit
    1. 0
      j4nk3y
      1. 0
        Gunnar Bittersmann
    2. 0
      Gunnar Bittersmann
      1. 0
        Matthias Apsel
        1. 0
          Gunnar Bittersmann
      2. 0
        j4nk3y
        1. 0
          Gunnar Bittersmann
          1. 0
            j4nk3y
      3. 0
        Felix Riesterer
        1. 0
          j4nk3y
          • zur info
          1. 1
            Felix Riesterer
            • php
            • programmiertechnik
            • zur info
            1. 0
              j4nk3y
        2. 0
          Gunnar Bittersmann
    3. 0
      j4nk3y
      1. 0
        Felix Riesterer
        • php
        • programmiertechnik
        • sicherheit
        1. 0
          j4nk3y
          1. 0
            Der Martin
            1. 0
              j4nk3y
              1. 0
                Der Martin
                1. 0
                  j4nk3y
          2. 0
            Felix Riesterer
            1. 0
              j4nk3y
              1. 0
                Der Martin
                1. 0
                  j4nk3y
              2. 1
                dedlfix
                1. 0
                  Gunnar Bittersmann
                  • typografie
                2. 0
                  j4nk3y
                  1. 0
                    dedlfix
                    1. 0
                      j4nk3y
                      1. 0
                        dedlfix
                        1. 0
                          j4nk3y
                          1. 0
                            dedlfix
                            1. 0
                              j4nk3y
                              1. 0
                                Der Martin
                                1. 0
                                  j4nk3y
                                  1. 0
                                    Der Martin
                              2. 1
                                dedlfix
                                1. 0
                                  Der Martin
                              3. 0
                                Gunnar Bittersmann
                                • datenbank
                                • programmiertechnik
                                1. 0
                                  j4nk3y
        2. 0
          Der Martin
        3. 0
          Gunnar Bittersmann
          • internationalisierung
          • php
          1. 0
            Felix Riesterer
            1. 0
              Tabellenkalk
              • zitat
              • zu diesem forum
              1. 1
                Matthias Apsel
    4. 0
      1unitedpower
      1. 1
        dedlfix
        1. 1
          1unitedpower
          1. 0
            Christian Kruse
          2. 0
            dedlfix
            1. 0
              1unitedpower
              1. 0
                dedlfix
                1. 0
                  Christian Kruse
                  1. 0
                    dedlfix
                  2. 0
                    1unitedpower
                    1. 0
                      Christian Kruse
                      1. 0
                        1unitedpower
                    2. 0
                      dedlfix
                      1. 0
                        1unitedpower
                        1. 0
                          dedlfix
  2. 0
    j4nk3y
    1. 0
      Gunnar Bittersmann
      • html
      1. 0
        j4nk3y
        1. 0
          Gunnar Bittersmann
          1. 0
            j4nk3y
            1. 0
              Matthias Apsel
              1. 0
                j4nk3y
  3. 0
    j4nk3y
  4. 0
    pl
    1. 0
      j4nk3y
      1. 0
        dedlfix
        1. 0
          j4nk3y
          1. 0
            dedlfix
            1. 0
              j4nk3y
              1. 0
                pl
                1. 0
                  j4nk3y
                  1. 0
                    pl
                    1. 0
                      dedlfix
                      1. -2
                        pl
                        1. 0
                          Matthias Apsel
                  2. 0
                    pl
              2. 0
                dedlfix
                1. 0
                  j4nk3y
                  1. 0
                    dedlfix
            2. 0
              j4nk3y
              1. 0
                dedlfix
      2. 0
        pl
  5. 0
    j4nk3y
    1. 0
      dedlfix
    2. 0
      j4nk3y
      1. 0
        j4nk3y
        1. 0
          pl
        2. 0
          dedlfix
          1. 0
            j4nk3y
            1. 0
              dedlfix
              1. 0
                j4nk3y
          2. 0
            j4nk3y
            1. 0
              j4nk3y
  6. 0
    j4nk3y
    1. 0
      Der Martin
      1. 0
        j4nk3y
        1. 0
          dedlfix
          1. 0
            j4nk3y
            1. 0
              Der Martin
              1. 0
                j4nk3y
        2. 0
          Der Martin
          1. 0
            j4nk3y
            1. 1
              Felix Riesterer
              1. 0
                j4nk3y
                1. 0
                  Matthias Apsel
                  1. 0
                    j4nk3y
                    • menschelei
                2. 0
                  Felix Riesterer
                  • php
                  • programmiertechnik
                  • sql
                  1. 0
                    j4nk3y
                    1. 0
                      Der Martin
                      1. 0
                        j4nk3y
                        1. 0
                          Der Martin
                          1. 0
                            j4nk3y
                            • menschelei
                    2. 0
                      Felix Riesterer
                      1. 0
                        pl
                      2. 0
                        j4nk3y
                        1. 2
                          dedlfix
                          1. 0
                            j4nk3y
                            1. 0
                              dedlfix
                              1. 0
                                Christian Kruse
                                1. 1
                                  dedlfix
                  2. 0
                    j4nk3y
                  3. 0
                    j4nk3y
                    1. 0
                      Felix Riesterer
                      1. 0
                        dedlfix
                        1. 0
                          j4nk3y
                          1. 0
                            pl
                            1. 0
                              j4nk3y
                          2. 0
                            dedlfix
                      2. 0
                        j4nk3y
                        1. 0
                          Der Martin
                        2. 0
                          Felix Riesterer
                          1. 0
                            Der Martin
                            1. 0
                              dedlfix
                          2. 0
                            j4nk3y
                            1. 1
                              Der Martin
                              1. 0
                                j4nk3y
    2. 0
      j4nk3y
      1. 0
        dedlfix
        1. 0
          j4nk3y
          1. 0
            Christian Kruse
            1. 0
              j4nk3y
              1. 0
                Christian Kruse
              2. 0
                Matthias Apsel
                • zu diesem forum
                1. 0
                  j4nk3y