hallo

Tach!

Dazu müsste der Platzhalter den Kontext kennen, in dem er sich befindet. htmlspecialchars() ist ja nicht für alle Kontexte eines HTML-Dokuments geeignet, mitunter muss man mehrere Maskierungen schachteln.

Natürlich. Die Frage ist nur wann. Es braucht hier nicht interessieren, dass $var1 Javascript ist. Und das javascript muss nichts wissen über den Kontxt in den es eingesetzt wird.

sprintf('<button onclick="%s">%s</button>', htmlspecialchars($var1), htmlspecialchars($var2));

In diesem einfachen Beispiel ist das noch kein Problem. Aber nimm mal eine URL in einem A-Element. Da wäre es theoretisch schon wie folgt. Praktisch kann man das htmlspecialchars() in dem Fall weglassen, weil rawurlencode() keine HTML-spezifischen Zeichen übriglässt.

sprintf('<a href="http://example.com/%s">%s</a>', htmlspecialchars(rawurlencode($var1)), htmlspecialchars($var2));

Aber du kannst doch gnz klar die Behandlung vorschreiben.

Nehmen wir ein nicht triviales Beispiel

sprintf('<h%d>%s</h>', $header_level, htmlspecialcharsORNOT($var2,$boolean));

Eierlegende Wollmilchsäue... hier bedeutet Kontext viel mehr. Offensichtlich muss da einiges an Wissen über die übergeodnete Anwendung einfliessen und für den Fall, dass der Inhalt von $var2 auch html enthalten soll, braucht es eine Überprüfung nach dem html header Modell.

Meine Antwort lautet da: man vermeide eierlegende Wollmilchsäue.

-- https://beat-stoecklin.ch/pub/index.html
freiwillige Angabe, für jeden sichtbar
freiwillige Angabe, für jeden sichtbar
freiwillige Angabe, für jeden sichtbar

Vorschau (Nachricht wird im Forum „Meta“ erscheinen)

  • Keine Tag-Vorschläge verfügbar
  • keine Tags vergeben

abbrechen

135

Wiki-Push: PHP

  1. 0
    1. 0
      1. 0
        1. 0
          1. 0
            1. 0
              1. 0
              2. 0
                1. 0
                  1. 0
                    1. 0
            2. 0
              1. 0
                1. 0
                  1. 0
  2. 0
    1. 0
      1. 0
        1. 0
          1. 0
          2. 0
            1. 0
              1. 0

                Wiki-Push: PHP / Umfang des Einstieg in PHP-Bereichs

            2. 0

              Wiki-Push: PHP / Lesedauer

  3. 1
    1. 0
      1. 0
      2. 0
        1. 0
      3. 0

        Wiki-Push: PHP / Sandbox

        1. 0
          1. 0
            1. 0
    2. 0