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

Beitrag lesen

Hallo,

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.)

Man würde ja aber keine Daten einbinden, die nicht ohnehin öffentlich sind.

Würde man nicht? Du hast es gedankenlos getan, andere schon vor dir. So sind z.B. Sicherheitslücken in GMail entstanden. Das Adressbuch wurde als externes JavaScript/JSON geladen. Mit ein paar Tricks konnte das eine fremde Site auslesen.

Es ist ferner wichtig zu verstehen, dass es verschiedene Arten von »öffentlich« im Web gibt:

1. Ressourcen, die von einem beliebigen HTTP-Client angefordert werden können (das sind alle).
2. Ressourcen, die im Browser von einer anderen Site aus per HTML/CSS/JS/SVG/… angefordert und ausgelesen werden können (das sind möglichst wenige).

Alle Ressourcen können durch Sessions, HTTP Basic Auth usw. personalisiert und abgesichert werden.

Bei letzteren Ressourcen besteht die Gefahr von Cross-Site Request Forgery (CSRF), da der Session-Cookie und andere Credentials mitgesendet werden.

HTML-Dateien sind durch die Same-Origin-Policy vor dem Auslesen durch fremde Sites im Browser geschützt. Es sei denn, der server erlaubt es explizit mittels CORS.

Scripte sind nicht derartig geschützt. Scripte können problemlos von anderen Servern eingebunden werden, werden dann im Kontext der aktuellen Seite ausgeführt. Das ist gleichzeitig ein Feature von JavaScript und eine Quelle unzähliger Sicherheitsprobleme.

Wenn ich die Daten im Beispiel aus der Session-Datei geholt habe, dann, weil das hier am einfachsten darzustellen war.

Ein sehr schlechtes Beispiel, das könnte jemand lesen und für bare Münze nehmen.

Ich versuche das Grundverständnis dafür wiederherzustellen, an welchen Stellen die Gefahrenpotentiale liegen.

Dann würde ich vorschlagen, erst einmal Recherche zu betreiben. Es gibt viele gute Artikel zum Thema, auch im Forumsarchiv gibt es viele entsprechende Diskussionen. Das unstrukturierte Fragen hier bringt m.E. wenig Erkenntnis.

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