Der alte Walter: XSS bei generierten Inhalten in HTML

Beitrag lesen

falsche Methode. JSON ist nicht HTML, hier wäre Javascript-String-Behandlung nötig - sofern das nicht schon die Methode zur Erzeugung des json macht.

Soll heißen, hier besteht eigentlich kein Handlungsbedarf, Javascript-String-Behandlung sollte von

//PHP
json_encode($data, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE);
// ...will meine JSON Datei halbwegs leserlich gestalten

erledigt werden, richtig?

Die Behandlung der Zeichen für HTML (also <>& -> &lt;&gt;&amp;)muß erfolgen, wenn die Daten in die HTML-Elemente geschrieben werden.

Ja, darüber bin ich bei meinen Recherchen bereits gestolpert. Daher:

      function escapeHTML(str) {
        return str.replace(/[&<>"']/g, function (char) {
          switch (char) {
            case "&":
              return "&amp;";
            case "<":
              return "&lt;";
            case ">":
              return "&gt;";
            case '"':
              return "&quot;";
            case "'":
              return "&#39;";
          }
        });
      }

und dann

myForm.innerHTML = `
      <input type="text" id="nameInput" name="name" value="${
        data ? escapeHTML(data.name) : ""
      }" autocomplete="off" required aria-required="true" aria-describedby="dataHelp"/>
    `;

cu,
Andreas a/k/a MudGuard

Danke Dir für Deine Hilfe! 😀😃👍👍