javascript entfernen
hans
- php
Hallo
auf meiner seite kann man html-code posten. ich möchte aber natürlich javascript vollständig ausmisten (xss-angriff).
reicht mein code dazu aus oder gibts da noch schlupflöscher:
$article = str_ireplace("<script","..",$article);
$article = str_ireplace("javascript:","..",$article);
$article = str_ireplace("onunload","..",$article);
$article = str_ireplace("onsubmit","..",$article);
$article = str_ireplace("onselect","..",$article);
$article = str_ireplace("onreset","..",$article);
$article = str_ireplace("onmouseup","..",$article);
$article = str_ireplace("onmouseover","..",$article);
$article = str_ireplace("onmouseout","..",$article);
$article = str_ireplace("onmousemove","..",$article);
$article = str_ireplace("onmousedown","..",$article);
$article = str_ireplace("onload","..",$article);
$article = str_ireplace("onkeyup","..",$article);
$article = str_ireplace("onkeypress","..",$article);
$article = str_ireplace("onkeydown","..",$article);
$article = str_ireplace("onfocus","..",$article);
$article = str_ireplace("onerror","..",$article);
$article = str_ireplace("ondblclick","..",$article);
$article = str_ireplace("onclick","..",$article);
$article = str_ireplace("onchange","..",$article);
$article = str_ireplace("onblur","..",$article);
$article = str_ireplace("onabort","..",$article);
$article = str_ireplace("cookie","..",$article);
Vielen Dank
Hallo
wäre es nicht das Einfachste, von "<script" bis "</script>" (ersatzweise Dateiende) alles zu überlesen?
Kalle
wäre es nicht das Einfachste, von "<script" bis "</script>" (ersatzweise Dateiende) alles zu überlesen?
nicht wirklich, weil man mit diesen eventhandlern auch scripte starten kann, zB
<body onload="böses javascript">
wäre es nicht das Einfachste, von "<script" bis "</script>" (ersatzweise Dateiende) alles zu überlesen?
nicht wirklich, weil man mit diesen eventhandlern auch scripte starten kann, zB
<body onload="böses javascript">
Wenn die Funktion boesesJavascript() nicht vorhanden ist, wird sie auch nicht gestartet.
Kalle
Hi,
Wenn die Funktion boesesJavascript() nicht vorhanden ist, wird sie auch nicht gestartet.
Es spricht nichts dagegen, ebendort auch die Funktion boesesJavaScript() selbst zu notieren.
Gruß, Cybaer
wäre es nicht das Einfachste, von "<script" bis "</script>" (ersatzweise Dateiende) alles zu überlesen?
schlechte idee ;) was ist mit scripten in anderen sprachen? oder bewussten tippfehler oder verschleierungen
zb "<scrIpt>
" oder "< script>
" die die fehlerkorrektur irgend eines browsers korrigiert und dann dennoch einen angriffspunkt bietet
kontextgerecht codieren (wie hier im forum) ist die beste möglichkeit
zb "
<scrIpt>
" oder "< script>
" die die fehlerkorrektur irgend eines browsers korrigiert und dann dennoch einen angriffspunkt bietetkontextgerecht codieren (wie hier im forum) ist die beste möglichkeit
Du meinst, z.B. aus < < machen?
Das widerspricht dem Eingangs-Posting "auf meiner seite kann man html-code posten."
Habe ich so verstanden, dass das auch zulässig sein soll, nur eben keine Scripte.
Kalle
Du meinst, z.B. aus < < machen?
ja
Das widerspricht dem Eingangs-Posting "auf meiner seite kann man html-code posten."
ich verstehe das so: "man kann html code posten" und nicht "man kann seine postings unter zuhilfenahme von html auszeichnen" ;)
Hello,
zb "
<scrIpt>
"
Das sollte str_ireplace() doch leisten.
forum) ist die beste möglichkeit
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Das sollte str_ireplace() doch leisten.
das schon - aber bei <scri pt> beissts dann schon aus - ich weiss zwar nicht ob wirklich ein browser das ding korrigiert, aber es gibt sicher methoden mit denen man irgendwas reinmogeln kann, was der internet explodert dann brav liest ;)
forum) ist die beste möglichkeit
da fehlt doch was?
Hi hans!
auf meiner seite kann man html-code posten. ich möchte aber natürlich javascript vollständig ausmisten (xss-angriff).
Was heißt "HTML-Code posten"?
Einfach nur HTML-Code-Beispiele? Dann maskiere kontextgerecht mit htmlspecialchars.
MfG H☼psel
Was heißt "HTML-Code posten"?
Einfach nur HTML-Code-Beispiele?
nein, der gepostete html-code wird auch ausgeführt und zum formatieren des textes benutzt (mittels fckeditor).
danke aber
nein, der gepostete html-code wird auch ausgeführt und zum formatieren des textes benutzt (mittels fckeditor).
Ich habe mal bei beepworld die Werbung per CSS ausblenden wollen, aber mein CSS wurde eliminiert. Da habe ich CSS- Blöcke mit Javascript eingebracht und die Seite war werbefrei.
Und diesen Hinterausgang willst du jetzt auch noch zumachen?
Kalle
nein, der gepostete html-code wird auch ausgeführt und zum formatieren des textes benutzt (mittels fckeditor).
was spricht gegen die best practice "bb code" zum formatieren?
sämtliche hintertüren (auch jene in form von browser-bugs) kannst du kaum schließen
Ich habe mal bei beepworld die Werbung per CSS ausblenden wollen, aber mein CSS wurde eliminiert. Da habe ich CSS- Blöcke mit Javascript eingebracht und die Seite war werbefrei.
weee! das ist aber sicher nicht im sinne der beepworld-nutzungsbedingungen
Ich habe mal bei beepworld die Werbung per CSS ausblenden wollen, aber mein CSS wurde eliminiert. Da habe ich CSS- Blöcke mit Javascript eingebracht und die Seite war werbefrei.
weee! das ist aber sicher nicht im sinne der beepworld-nutzungsbedingungen
Oha, da ich natürlich jederzeit ein braver Vorzeige- Bürger mich zu bemühen pflege, habe ich sofort nachgesehen und dieses gefunden:
"Das Mitglied räumt Beepworld das Recht ein, AGB-konforme Werbung auf den in das Beepworld Netzwerk eingestellten Webseiten zu schalten."
Dieses Recht KANN ich gar nicht ausräumen, da die Werbung ja Bestandteil des gesendeten Dokuments ist. Und geschaltet wird sie ja auch. Erst EIN, dann wieder AUS. Da müsste schon eine Mindest- Anzeigedauer und Mindestgröße verabredet werden.
Dieses Recht KANN ich gar nicht ausräumen, da die Werbung ja Bestandteil des gesendeten Dokuments ist.
doch, indem du dem vertrag nicht zustimmst - der anbieter hat seinen agb schon einseitig zugestimmt, er darf sie ohne deiner zustimmung nicht ändern (bzw er muss dich fristgerecht informieren) du darfst sie ebenfalls nicht einseitig ändern, ohne den anbieter zu informieren - wenn er nicht einverstanden ist, kann er deinen vertrag aufgrund von nichterfüllung kommentarlos als nichtig erklären
Und geschaltet wird sie ja auch. Erst EIN, dann wieder AUS. Da müsste schon eine Mindest- Anzeigedauer und Mindestgröße verabredet werden.
dass die werbung nicht sofort wieder ausgeblendet wird bzw werden, geht implizit daraus hervor bzw ist ein schlüssige tatsache - es wäre absurd, wenn dem nich so wäre
wenn du bei einem dienstleister eine dienstleistung in anspruch nimmst, musst duch auch explizit in allen punkten den agb zustimmen, du machst das schlüssig durch bestimmte handlungen
auch ein bäcker hat eine agb - dass du die brötchen bei ihm kaufst indem du ihm geld gibst, ist ein schlüssiges indiz dafür, dass du dem vertrag zustimmst
Hi,
Ich habe mal bei beepworld die Werbung per CSS ausblenden wollen, aber mein CSS wurde eliminiert. Da habe ich CSS- Blöcke mit Javascript eingebracht und die Seite war werbefrei.
Und diesen Hinterausgang willst du jetzt auch noch zumachen?
es ist ein legitimes Interesse des Dienstleisters, dessen Dienstleistung Du in Anspruch nimmst, sein Angebot gemäß seiner (üblichen) Geschäftsmodelle zu finanzieren. Verhinderst Du dies mutwillig, braucht der Dienstleister nicht mal irgendwas in seinen AGBs geschrieben zu haben - er kann jeden Vertrag mit Dir umgehend und fristlos aufkündigen. Gegebenenfalls steht dann noch eine Klage wegen Geschäftsschädigung an.
Cheatah
Hello,
irgendwie kannst Du damit auch den Nutztext kaputt machen, wenn der nun zufällig über 'onmouseup' berichtet, oder?
Liebe Grüße aus Syburg bei Dortmund
Tom vom Berg
Ich weiß nicht, ob das Suchen von Strings der richtige Ansatz ist. Eine saubere Lösung wäre, den vom Benutzer erstellten Inhalt parsen zu lassen, wobei du ein DocumentFragment erhältst, den entsprechenden Inhalt darauf prüfen, ob nur bestimmte erlaubte Elemente und Attribute vorkommen und alles andere zu entfernen.
Mit der Blacklist-Methode hast du nämlich das Problem, dass irgendein zukünftiger Browser (bzw. eine neue Version eines existierenden Browsers) ein neues, proprietäres Attribut einführt und schwupps, ist deine Seite XSS-anfällig.