molily: Nicht nur meckern, zeigen! Escaping für JavaScript-Variablen

Beitrag lesen

Hallo,

echo 'var buecher = new Array("' . implode('","', $_SESSION['buecher']) .'");' . PHP_EOL;

Bitte nicht nur meckern, sondern zeigen, wie es geht!

Die saubere Lösung hatte ChrisB schon aufgezeigt, sie lautet JSON.

Was müssen wir also escapen? Das zu diskutieren, wäre doch wünschenswert!

Das kommt auf den Kontext an. Hier ist der Kontext ein JavaScript-String.

In einem JavaScript-String sind die Stringbegrenzer (" bzw. ') sowie Escape-Sequenzen problematisch (\n, \u1234, \123, \x12, \ vor einem Zeilenumbruch…).

Also escapen oder verhindern:

  • Quotations

  • Ecapezeichen (Backslashes)

  • etliche nicht druckbare Zeichen (Steuerzeichen)

  • geschweifte Klammern (?)

  • Werte quotieren (!)

  • Bezeichner quotieren (?)

Das hier alles zu diskutieren ist müßig, weil man es nicht händisch tun muss und auch nicht tun sollte. Beliebige Usereingaben oder Sessiondaten sollte man gar nicht in JavaScript als JavaScript schreiben.

Wenn man sie in HTML einbindet, dann JSON-kodiert in ein Attribut oder in einem unsichtbaren Element, natürlich HTML-kodiert. Am besten vorher mit einem einschlägigen HTML-Sanitizer behandeln.

In einem externen JavaScript sollte man sie nicht unterbringen, denn das kann einfach von einer anderen Site eingebunden werden – und schon sind die Sessiondaten gestohlen. (Gut, man könnte das mit einem POST und einem CSRF-Token absichern, aber wozu der Aufwand.)

Welche Zeichen sind in JavaScript-Bezeichnern zulässig?

http://es5.github.io/#x7.6

Aber ich sehe nicht, was das mit dem Beispielcode zu tun hat.

Da es hier um die Erzeugung von Arrays bzw. Objekten geht, beträfe dies die Elementbezeichner.

Was sind Elementbezeichner? Du meinst Eigenschaftsnamen bei Objekten?

Mir scheint, du verkomplizierst die Sache. Das ist bei sicherheitskritischen Fragen immer gefährlich.

Mathias

0 48

PHP array an javascript function übergeben

javascriptnewbie
  • javascript
  1. 0
    dedlfix
  2. 0
    Der Martin
    1. 0
      molily
    2. 0
      javascriptnewbie
      1. 0
        M.
        1. 0

          Gute Idee

          Tom
          • menschelei
      2. 1
        ChrisB
        1. 0
          javascriptnewbie
          1. 0
            molily
            1. 0
              javascriptnewbie
              1. 0
                M.
              2. 6
                molily
      3. 0
        Tom
        1. 0
          javascriptnewbie
          1. 0
            Tom
            1. 0
              Sven Rautenberg
              1. 0

                Nicht nur meckern, zeigen! Escaping für JavaScript-Variablen

                Tom
                1. 0
                  molily
                  1. 0
                    tami
                    1. 0
                      molily
                      1. 0
                        tami
                  2. 0
                    Tom
                    1. 0
                      molily
              2. 0

                PHP json_encode - kontextspezifisches Escaping

                tami
                1. 0
                  tami
                  1. 0
                    molily
                    1. 0
                      Sven Rautenberg
                      1. 0
                        molily
                        1. 0
                          molily
                        2. 0

                          JSON in HTML einbetten

                          molily
                          1. 1

                            JSON in HTML einbetten - RoR "vs" ZF

                            tami
                            1. 0
                              tami
                              1. 0
                                Tom
                                1. 0
                                  molily
                            2. 0
                              molily
                              1. 0
                                tami
                                1. 0
                                  tami
                              2. 0

                                JSON-Paket mit composer vom Zend Framework holen

                                tami
                              3. 2

                                JSON in HTML einbetten

                                molily
                                • php
                          2. 0

                            Reihenfolge der Auswertung?

                            Tom
                            1. 0
                              tami
                            2. 0
                              tami
                            3. 0

                              Reihenfolge der Auswertung? Codierung, kleine Korrektur

                              Tom
                            4. 0
                              molily
                              1. 0
                                Tom
                                1. 0
                                  molily
                  2. 0
                    Tom