Shorturls blockieren
Geizhals » Forum » Geizhals » Shorturls blockieren (46 Beiträge, 832 Mal gelesen) Top-100 | Fresh-100
Du bist nicht angemeldet. [ Login/Registrieren ]
.............
Re(10): Ich kann noch mehr
09.09.2010, 21:06:53
Was invalider Code ist und was nicht, ist browserabhängig, Browser halten sich
nun mal nicht an den W3C-Standard und interpretieren HTML-Fehler ziemlich
freizügig.


Trotzdem kann man den HTML-Code so weit sauber halten, dass es in jedem Browser valide ist.

Wir filtern HTML-Steuerzeichen nicht, weil wir eben ein Subset von HTML
erlauben.


Deswegen schrieb ich ja auch "alle als Text geltenden HTML-Steuerzeichen" und nicht "alle HTML-Steuerzeichen".

Aber mal davon abgesehen, um auf eure merkwürdige Methode zurückzukommen:


˂a href="http://example.org/" onclick="alert('foobar')">Klick</a>


wird zu


&lt;a href="http://example.org/" onclick="alert('foobar')"&gt;Klick</a><br><!-- > --><!-- " -->


Die angehängten Kommentare gehen wohl eher als zweifelhafter Versuch denn als ernsthafter Schutz vor Schadcode durch. Im Gegenteil, sie haben mir bei meinem Versuch sogar in die Hände gespielt. Kritisierbar ist auch, dass invalider HTML-Code erzeugt wird (ein schließender a-Tag, der nicht da sein soll).

In dem Fall wäre eine korrekte und saubere Lösung:


<a href="http://example.org/">Klick</a>


Das sollte jeder brauchbare HTML-Filter mit einer White-List hinkriegen.

Davon abgesehen würde ich HTML-Steuerzeichen in einem Text-Knoten (und nur dort) konsequent durch Entitäten ersetzen. Beispiel:


<span>"A" > "B"</span>


wird zu


<span>&quot;A&quot; &gt; &quot;B&quot;</span>


Und wenn dann noch jemand Javascript-Code ausführen oder schadhaften HTML-Code reinschmuggeln kann, muss er schon ziemlich gut sein. Ich seh da zumindest keine große Möglichkeit, außer man findet Leaks im HTML-Parser des Filters.

09.09.2010, 22:57 Uhr - Editiert von hellbringer, alte Version: hier
Diskussion beendet PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
...............
Re(12): Ich kann noch mehr
09.09.2010, 23:48:06
Einen Validator einzubauen ist ein overkill - und das wäre dafür notwendig
(alles, was validiert, tolerieren und dann tags/attribute filtern).


Nicht wirklich. Das ist sogar sehr einfach.

Die dienen dazu um Darstellungsfehler durch offene Tags/Attribute zu vermeiden
(ist schon vorgekommen).


Falscher Ansatz. Lass es gar nicht erst dazu kommen, dass Tags offen gelassen werden (ohne diesen schmutzigen Fix).

Wie gesagt, mir hat dies sogar in die Hände gespielt. Wären die Kommentarblöcke nicht da gewesen, hätte ich nicht so einfach Erfolg gehabt, wenn überhaupt.

Doch, nur durch das " im Kommentar war dein "exploit" überhaupt möglich.


Ja, genau deshalb sollte man sie auch rausnehmen.

das stimmt, es gibt nun im Forum an 2 Stellen eine Filterung dieser Art, die
erste erzeugt diesen Effekt und ist nun eigentlich redundant ... Die zweite
schlägt bei den offenen Tags zu und löscht genau diese on*-Attribute.


Hört sich ja sehr gut an. Ich würde allerdings nicht mit einer Black-List sondern mit einer White-List arbeiten. Nicht Attribute verbieten, sondern explizit Attribute erlauben.

Was ein Text-Knoten ist, sieht ein x-beliebiger HTML-Parser leider anders als
ein Browser.


Man muss eben die Komplexität des HTML-Codes so weit reduzieren, dass es dazu erst gar nicht kommen kann. Es ist ja nicht notwendig in einem Forum alle möglichen HTML-Konstrukte zu erlauben. Was braucht man durchschnittlich? Links, Bilder, Textformatierungen (fett, kursiv), Tabellen, Quotes und Code-Blöcke. Mehr ist doch eigentlich nicht notwendig. Wozu dem User also fast grenzenlose Freiheiten erlauben? Je mehr Möglichkeiten der User hat, desto ausgefuchster muss auch die Logik sein, die die Eingabe verarbeitet. Nicht grundlos verwenden viele Foren eine reduzierte Auszeichnungssprache (zB. BBCode).

09.09.2010, 23:48 Uhr - Editiert von hellbringer, alte Version: hier
Diskussion beendet PM Übersicht Chronologisch Zum Vorgänger
 
Melden nicht möglich
 

Dieses Forum ist eine frei zugängliche Diskussionsplattform.
Der Betreiber übernimmt keine Verantwortung für den Inhalt der Beiträge und behält sich das Recht vor, Beiträge mit rechtswidrigem oder anstößigem Inhalt zu löschen.
Datenschutzerklärung