Ausgaben gegen Cross-Site-Scripting sichern

Diese Anleitung setzt die einfache Installation von SSEQ-LIB auf dem Server voraus.

Die Funktion aus der SSEQ-LIB-Bibliothek gegen Cross-Site-Scripting ist die: SEQ_OUTPUT().

Beispiele der Verwendung in eine Webapplikation:
<br />
<?
php
// einfache Ausgabe
echo "Hallo " SEQ_OUTPUT($username) . "!";
?></p>
<p>// einbinden in ein Formular<br />
<input type="text" name="username" value="echo SEQ_OUTPUT($username); ?>&#8222;></p>
<p>// erzeugen eines Links<br />
<a href="index.php?action=echo SEQ_OUTPUT($_GET&#91;'action'&#93;); ?>&#8222;> LINK </a><br />

Das Verwenden von SEQ_OUTPUT bei der Ausgabe von Datenbankinhalten schützt besonders gegen das „reflexive“ Coss-Site-Scripting.

(Codebeispiel von schattenbaum.de mit beispielhafter Anpassung)
<br />
<?
php
  $abfrage 
"SELECT url, urlname FROM links";
  
$ergebnis mysql_query($abfrage);
  while(
$row mysql_fetch_object($ergebnis))
    {
    echo 
SEQ_OUTPUT($row->url);<br />
    }<
br />
?><br />

Das könnte dich auch interessieren …

4 Antworten

  1. Peter sagt:

    Hallo Erich,
    bekanntlich sollte man ja $_SERVER[„php_self“] nicht in einem Formular als „action“.
    Kann ich dies dennoch einsetzen sobald ich Dein SEQ_OUTPUT() verwende?

    Also: <form action=““ method=“POST“>

    [Erich:] Korrektur:
    Also: <form action=“<?php echo SEQ_OUTPUT($_SERVER[„php_self“]); ?>“ method=“POST“>

    Viele Grüße
    Peter

  2. Erich Kachel sagt:

    @Peter
    SEQ_OUTPUT kodiert auch das den SLASH „/“ – das wird also nicht funktionieren. Verwende stattdessen htmlentities(), an dieser Stelle reicht es aus.

  3. WebBird sagt:

    Benutzt man SEQ_OUTPUT, um etwa eine Telefonnummer auszugeben, die folgendes Format besitzt:

    (+49)0123/456789

    …“frißt“ SEQ_OUTPUT das „+49“ in der Klammer. Ergebnis:

    ()0123/456789

  4. WebBird sagt:

    Ergänzung zum ersten Kommentar: Diese Zeile „entfernt“ das +49:
    $string = mb_convert_encoding($string_, „UTF-8“, „7bit, UTF-7, UTF-8, UTF-16, ISO-8859-1, ASCII“);