Felix Riesterer: Ein Slash \ wird im Formular automatisch gesetzt, wenn ein Wort in "" geschrieben wird

Beitrag lesen

Liebe Lynn,

bin weiblich ;-)

dann ist das ja geklärt. ;-)

if(isset($_POST['Text']))
  {
      $_SESSION['Text'] = $_POST['Text'];                            
  }   

Das hatte ich schon befürchtet. Das ist in zweierlei Hinsicht sehr unglücklich:

  1. Die Inhalte einer Session-Variable (lies: Werte im $_SESSION-Array) kommen "irgendwie aus dem Script" dort hin. Ihr Ursprung ist völlig uneinsichtig, daher auch meine Frage.
  2. Die Werte in $_GET, $_POST und $_REQUEST sind Daten, die von einer anderen Quelle zum Webserver übertragen wurden. Sie sind grundsätzlich als böse weil manipulativ und Programmfehler ausnutzend einzustufen sind. Man tut sich wirklich keinen Gefallen, wenn man diese "Benutzereingaben" in andere Variablen umkopiert und so ihre Herkunft vor sich selbst verschleiert.

So, lieber Punkt, nun spring mal ;-)

Ein seit über zehn Jahren veralteter Schutzmechanismus in PHP wollte unsicher geschriebene PHP-Programme davor schützen, dass doppelte (oder auch einfache) Anführungszeichen aufgrund eines nicht beachteten Kontextwechsels Schaden verursachen oder gar Einfallstore für Eindringlinge bieten. Dazu wurden von PHP beim Empfang der Daten diese Anführungszeichen mit einem vorangestellten Backslash "entschärft". Dieses Verhalten scheint Dein Script auch zu zeigen, da Deine Session-Werte eben unverändert aus $_POST übernommen werden.

Zwei Dinge solltest Du im Idealfall tun:

  1. eine wirklich aktuelle PHP-Version einsetzen (mindestens 7.4)
  2. Dein sehr unsicheres Script entsorgen, denn wenn Du nicht weißt, was Du da tust, ist patchen/reparieren keine echte Option!

Tut mir leid das so deutlich schreiben zu müssen, aber dass auf Deinem Webspace eine dermaßen veraltete PHP-Version tickt, ist eben ein wirklich gravierendes Sicherheitsrisiko!

Liebe Grüße

Felix Riesterer