Kalle_B: <object> einbinden - Sicherheitslücke?

Hallöle,

Besucher einer Webseite können Termine eingeben und dazu ein Video.

Aus YouTube wird das dazu angebotene Feld kopiert, z.B.
<object width="425" height="344"><param name="movie" value="http://www.youtube.com/v/VT4bhdeGOsU&hl=ru&fs=1&color1=0xcc2550&color2=0xe87a9f"></param><param name="allowFullScreen" value="true"></param><param name="allowscriptaccess" value="always"></param><embed src="http://www.youtube.com/v/VT4bhdeGOsU&hl=ru&fs=1&color1=0xcc2550&color2=0xe87a9f" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"></embed></object>

Nun behandle ich alle Daten vor der Anzeige mit

// =================================  
   function quote2html ( $string ) {  
// =================================  
// 2009-09-17 ERSETZT EINFACHES UND DOPPELTES ANFUEHRUNGSZEICHEN DURCH HTML-SPECIAL  
  $string   = stripslashes($string);                  // kann von GET, POST, COOKIE kommen  
  $string   = htmlspecialchars($string);  
  $string   = str_replace( "'", "&#039;", $string );  // kann aus DB kommen  
  $string   = str_replace( '"', "&quot;", $string );  // kann aus DB kommen  
  return $string;  
}  

was natürlich dazu führt, dass der Code angezeigt wird statt des Videos.

Die DAten nicht zu behandeln, ist aber ein Sicherheitsrisiko. Wie kann man ein Video sicher anzeigen?

Vielleicht indem man
value="http://www.youtube.com/v/VT4bhdeGOsU&hl=ru&fs=1&color1=0xcc2550&color2=0xe87a9f">

bei der Eingabe ausfiltert und nur diese Angabe speichert?

Funzt das dann auch noch bei MyVideo und anderen Anbietern?

Lieben Gruß, Kalle

  1. Hi,

    Die DAten nicht zu behandeln, ist aber ein Sicherheitsrisiko. Wie kann man ein Video sicher anzeigen?

    indem der Nutzer nur mitteilt, welches Video er angezeigt haben möchte, und der Code dafür von Dir erzeugt wird.

    value="http://www.youtube.com/v/VT4bhdeGOsU&hl=ru&fs=1&color1=0xcc2550&color2=0xe87a9f">

    Dabei kannst Du dann auch gleich die Validität wieder herstellen.

    Cheatah

    --
    X-Self-Code: sh:( fo:} ch:~ rl:| br:> n4:& ie:% mo:) va:) de:] zu:) fl:{ ss:) ls:~ js:|
    X-Self-Code-Url: http://emmanuel.dammerer.at/selfcode.html
    X-Will-Answer-Email: No
    X-Please-Search-Archive-First: Absolutely Yes
  2. Hi!

    Besucher einer Webseite können Termine eingeben und dazu ein Video.
    Aus YouTube wird das dazu angebotene Feld kopiert, z.B.
    Nun behandle ich alle Daten vor der Anzeige mit

    Wenn du Code hast, der auch als solcher interpretiert werden soll, darfst du ihn natürlich nicht wie Daten behandeln.

    was natürlich dazu führt, dass der Code angezeigt wird statt des Videos.

    Eben, es ist ja nun kein Code mehr sondern die Abbildung einer Zeichenfolge als Literal in HTML. Bei Interpretieren entsteht daraus wieder die ursprüngliche Zeichnfolge und kein Anweisungscode.

    Die DAten nicht zu behandeln, ist aber ein Sicherheitsrisiko. Wie kann man ein Video sicher anzeigen?

    Code muss unbehandelt bleiben, um Code zu bleiben. Dir bleibt da nur übrig, ihn selbst auf sicherheitskritische Bestandteile zu prüfen. Das ist normalerweise nur mit hohem Aufwand zu erreichen.

    Vielleicht indem man
    value="http://www.youtube.com/v/VT4bhdeGOsU&hl=ru&fs=1&color1=0xcc2550&color2=0xe87a9f">
    bei der Eingabe ausfiltert und nur diese Angabe speichert?

    Den Embed-Code kann man persönlich anpassen. Wenn dir das egal ist, dann extrahiere daraus nur die URL, und füge diese beim Ausgeben in ein Standard-Embed-Template ein. Aber auch bei der URL kann man dir eine zu einem unerwünschten Ziel unterschieben, wenn du eine Überpüfung unterlässt.

    Funzt das dann auch noch bei MyVideo und anderen Anbietern?

    Prinzipiell ja, aber jeder kocht da ja sein eigenes Süppchen, was den Embed-Code angeht.

    Lo!