RSS-Problem/Bug?

evaki

Will man den erwünschten Effekt nicht nur bei html5 erreichen,
dann statt
$muell = array("<script>", "</script>", "<noscript>", "</noscript>");
so
$muell = array("<script", "</script>", "<noscript>", "</noscript>");
Ausführung auch nach unten hin kompatibel verhindert.

MfG. Evaki

evaki

#38
Danke, danke, hilft weiter!
So kann jeder, der jetzt schon den Patch möchte, schon mal loslegen.

Die von mir vorgestellte Lösung ist eine rein pragmatische, mit dem Hintergedanken, daß wenn <script> fehlt, auch die Ausführung damit entfällt. Wenn dann Code - mit <script> "unsichtbar" - und anderes zu sehen sein sollte, weiß man, das gehört nicht dahin - so wie auch html in noscript  :?
Außerdem war ich zu faul mich wieder mal mit preg_replace rumzuschlagen
- wenn ich's (noch) vermeiden kann  :-D

Tja, und manchmal muß man vorlegen, damit etwas zurück kommt.

MfG. Evaki

DarkViper

#37
 $muell = array("<script>""</script>""<noscript>""</noscript>");
 
$description str_replace($muell""$description); ?>

Der Code funktioniert, um die meisten neueren Tags als solche zu entfernen, nicht jedoch den enthaltenen JS-Code.
Allerdings kann solch ein Tag noch zusätzliche Parameter haben, z.B: <script type="javascript"> und dann klappt str_replace() nicht mehr.

Folgender Code entfernt sowohl <script> als auch <noscript> Tags, unabhängig von eventuellen Parametern oder überflüssiger Leerzeichen in den Tags und dazu gleich auch noch den  Inhalt innerhalb der Tags.
 $description \preg_replace('/(.*?)(<(?:no)?script[^>]*>[^<]*<\/(?:no)?script>)(.*?)/is''$1$3'$description);

Die 2. Lösung entfernt "<script>JS-Code</script>" komplett und bei "<noscript>HTML-Inhalt</noscript>", lässt sie den HTML-Inhalt stehen. [rot wird gelöscht, blau bleibt stehen]
 $description \preg_replace('/(.*?)(?:(?:<script[^>]*>[^<]*(\s?)<\/script>)|(?:<noscript[^>]*>([^<]*)<\/noscript>))(.*?)/is''$1$2$3'$description);
[url=http://www.youtube.com/watch?v=tmzDAz6ZvFQ]Der blaue Planet[/url] - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen[br]
[i]"You have to take the men as they are... but you can not leave them like that !" :-P [/i]
[i]Das tägliche Stoßgebet: [b]Oh Herr, wirf Hirn vom Himmel ![/b][/i]

evaki

#36
Ich gebe mir mal selbst die Antwort.

    <item>
        <title><![CDATA[<?php echo stripslashes($item["title"]); ?>]]></title>
<?php 
 $muell 
= array("<script>""</script>""<noscript>""</noscript>");
        
$description str_replace($muell""$description); ?>
       

<description><![CDATA[<?php echo $description?>]]></description>       


Zwar ist es immer noch möglich einen für RSS/XML nicht validen Code in NEWS einzubetten, aber <script> wird im RSS/XML entfernt, als eine reine Vorsichtsmaßnahme. Die Strings - hier html5 - lassen sich natürlich auch html-abwärtskompatibel und um sonstigen Kram erweitern.

Sinnvoll ist auch in die RSS-Doc's reinzuschauen, damit erst garkeine nonvalide Codes Eingang finden. Wie man sehen konnte, ist das ja machbar/möglich.

Das war's wohl zu beiden Anliegen, oder ist noch was offen?
Eigentlich ganz schön viele Wege, Wirrungen und Irrungen für so'n Spaß - muß aber anscheinend sein, wenn man keine Ahnung hat.
MfG. Evaki

evaki

#35
So, alle nochmal zusammengetrommelt und die Sachlage besprochen.
Ergebnis:
Der Vorgang stellt anscheinend kein Sicherheitproblem dar.
Egal ob in NEWS/CKE so ein Script unter "News Kurz" eingetragen wird - es wäre erlaubt!

Es verursacht im ausgegebenen RSS/XML "nur" einen Fehler, das XML ist nicht mehr valide.
Das ist alles, sonst nix  :roll:  (ja gut, haben mal wieder dazugelernt  :-D )

Die Ausgabe kann im RSS.php anscheinend gefiltert werden (mit Zeigefinger auf die Programmierer  :-D ) ,der Inhalt inkl. <script> steht in der db unter content_short, und wird von rss.php über $description = stripslashes($item["content_short"]); ausgegeben, wenn ich das jetzt richtig verstanden habe. Kann ja wer 'nen Filter basteln, wenn dat allens so richtich is.

MfG. Evaki

Nachtrag.: FRAGE Wär's statt nun 'nen Sperrfilter für alles Unerlaubte zu stricken, nicht sinnvoll einen Durchlaßfilter/PASS für die vorgegebenen Elemente einzurichten?

dbs

QuoteIch ging außerdem bisher davon aus, daß DEV hier regelmäßig reinschauen
Kannst du.

Ich versuche Probleme zu verstehen und zu vermitteln. Je mehr das also versuchen, desto näher kommt man vielleicht dem was sinnvoll für alle ist.
Die Überlegung, etwas modulbasiert zu machen, gab es auch. Hier helfen dann nur deine Argumente weiter. Das ist halt immer das Dilemma bei der Kommunikation. Versteht der andere das was gemeint war, oder kann man es auch anders verstehen.
Wir werden sehen.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

Dem Link bin ich gefolgt.
Da stiime ich Dir gerne zu. Da bleibt's dann jedem selbst überlassen was und wie er CK nutzen will.
Doof ist halt - erst jetzt fällt's mir deutlich auf, daß Du immer CK genannt hast, ich aber immer NEWS, wenn's um die Verhinderung von <script> ging  - Die Zwangsverheiratung, ohne diese Koppelung gäbe es das Dilemma nicht.

Hab' nicht reingeguckt, und frag mal janz doof, hilft nicht'n Filter in view von news?
MfG. Evaki

dbs

Hatte geschrieben, dass man nicht einfach alles erlaubt, sondern rausfinden muss was erlaubt sein sollte.
Das muss man nämlich alles extra zulassen/aufzählen. Sollte eigentlich durch den CK Link gestern veranschaulicht werden.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

#31
Feststellungen und etwas infrage zu stellen hat nichts mit Vorwürfen zu tun, schon gar nicht welche, die sich an eine Person richten. - Wie komme ich dazu?
Meine Aussagen sind Beiträge zur Sachlage, sonst nix. Und wohlmeinend!

Bei Entscheidungen zu "zwischen Sicherheit und Freiheit" kommt mir nicht DHTML in den Sinn.
Da CKEdit nicht nur in WB genutzt wird, kann man sich mal hierzu andere CMS anschauen.
Da geht's.

Ich und andere wollen die Freihet haben DHTML und alles andere was per Norm existiert zu nutzen.
Es ist also keine Frage der Sicherheit. Hier wird etwas verwechselt.
MfG. Evaki

ps. Entdecke ich erst jetzt
>>"Wende dich bitte direkt an Dietmar."
Ich betrachte Beiträge, insbesondere die von Dir als Hilfe; Anregungen und  Vorschläge, die ich nicht missen mag.
Ich ging außerdem bisher davon aus, daß DEV hier regelmäßig reinschauen, und den unterschiedlichen Gedanken und Vorschlägen vielleicht auch folgen.
Somit habe ich die Beiträge von Dir nie als Grundlage für einen Disput betrachtet. Im Gegenteil, wegen teils unterschiedlicher Auffassungen gab's es ja erst das "Reinknien" und Nachhaken.

dbs

QuoteMüsste man wissen wie wichtig es wäre, dass auch script oder onchange möglich ist.

Wenn du Angebote ausschlägst, die passende Mischung zwischen Sicherheit und Freiheit zu finden, kann man nicht helfen.
Ich denke ich habe mehrfach zum Ausdruck gebracht, dass man sich das Optimale gern erarbeiten kann.
Von dir kommen aber oft nur Vorwürfe. An dem Punkt ist für mich dann nichts mehr zu machen.
Wende dich bitte direkt an Dietmar.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

#29
Der CK ist der eingestellte Standardeditor. News und Wysiwyg nutzen den.
Ein normaler User setzt kein Script in den Text. Sonst könnte man wieder alles erlauben.


Der ist kein normaler User, der DHTML nutzt?
Also verbietet man? Kann man sich das mit dem Verbieten nicht mal langsam abgewöhnen?
CK nicht nach seinen Wünschen gestalten zu können ist mehr als schräg.
Inhalte nicht mit DHTML ausstatten zu können auch!

NEWS muß nicht zwingend mit dem Standard-Editor zwangsverheiratet sein.
Erst dadurch entsteht das Problem!


MfG. Evaki

dbs

Dein Problem passt hier nicht rein. Bitte verwende deinen eigenen Thread.
Wenn du dich dort immer direkt an Uwe wendest, wird vielleicht niemand anderes antworten.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

astricia

Ich frag jetzt mal hier, da mir jacobi22 aus irgendwelchen Gründen nicht mehr antwortet... (ist der im Urlaub?). Vor einigen Wochen hatte ich ja schon das Problem, dass ich eine rss.php aus einem OFA-Modul generieren wollte. Siehe hier: https://forum.websitebaker.org/index.php/topic,31424.msg220484.html#new Ich brauche dazu aber in der <description> ... </description> mehr als nur EIN Feld aus OFA! Das Bild (über Bild-Upload) hochgeladen konnte ich ja inzwischen integrieren - nicht aber das Bildcopyright (ist ein eigenes Feld). Außerdem möchte ich bei <pubDate>..</pubDate> nicht das Datum der Veröffentlichung haben, sondern ein Datums-Feld aus OFA (da ich dort Meldungen der letzten 10 Jahre manuell importieren werde - das Veröffentlichungsdatum ist somit immer 2019, aber das eigentliche Datum liegt bis zu 10 Jahre zurück!). Oder <pubDate> komplett ausschalten, dafür das Feld aber in die Description mit einbauen.

Momentan enthält die Schleife also:
<description>[IMAGE] [FIELD_2]</description>

Ich brauche aber sowas wie:
<description>
[IMAGE]
<div class="bildunterschrift">[FIELD_3]</div>
<li>[FIELD_2] ([FIELD_1])</li>
</description>


Feld 1 ist Datum - Feld 3 ist das Bildcopyright.

Wie bekomme ich das hin? Der Kunde hatte bei seiner vorigen (statischen) Website bereits einmal eine Abmahnung wegen fehlendem Bild-Copyright im RSS-Feed und ist da sehr empfindlich! Das muss also vor Freischaltung gelöst sein!

LG,
Astrid

dbs

QuoteIn NEWS ok, aber im CK nicht?
Der CK ist der eingestellte Standardeditor. News und Wysiwyg nutzen den.
Ein normaler User setzt kein Script in den Text. Sonst könnte man wieder alles erlauben.
Müsste man wissen wie wichtig es wäre, dass auch script oder onchange möglich ist.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

Quotedass <script> im CK nichts zu suchen hat
In NEWS ok, aber im CK nicht??? JS darf doch, soweit ich weiß, im Gegensatz zu CSS, an beliebiger Stelle im html-Code stehen.
Oder geht mein Hirn gerade gegen Null? Bin nämlich so langsam alle. Für heute war's genug der Aufregung.  :-D
MfG. Evaki

<offtopic>
Wo steckt eigentlich jacobi22?
</offtopic>

dbs

Vielleicht kann das von DEV ja bestätigt werden.
DEVinitiv bestätige ich dir, dass <script> im CK nichts zu suchen hat und damit auch in News und RSS nicht.
Wird in der nächsten Version gefixt sein. Lösung hatte ich verlinkt.
Wenn der DEV nicht doch noch alles anders macht. Man weiß es ja nie. :-)
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

#23
Nochmal über'n Tellerrand geschaut und wieder schlauer, bzw. erkannt was ich verpennt habe.
Für 'nen Halbwissenden ist's aber auch nicht so ganz leicht den Kram unter allen Aspekten zu sehen.

In XML gehört <script> nicht zum Standard, was ich im häufigen Umgang mit XML "eigentlich" hätte wissen müssen. Mit XSLT ist es wiederum möglich (transformieren in Xhtml).
Der Aufruf von /modules/news/rss.php?page_id=6 liefert die XML-Rohdaten, weshalb das über NEWS eingeschleuste <script> dort nix zu suchen hat.

Bedeutet nach meinem aktuellen Kennnisstand, daß man in NEWS das <script> ausschließen muß, um den Eingang in's (RSS)XML zu verhindern.

Nun hoffe ich, daß ich's kapiert habe.
Vielleicht kann das von DEV ja bestätigt werden.
MfG. Evaki

evaki

#22
QuoteWas der Empfänger dann mit <script> oder <style> Tags anfängt... ist dessen Problem (oder auch nicht).

Ich bin dann wohl der erste, der dann wieder - nicht unbedingt zu Unrecht - schreit: "Was soll ich mit 'nem kastrierten NEWS bzw. RSS? Warum werden hier RSS/XML-Eigenschaften eingeschränkt?" Standards sollen/wollen genutzt werden können. Schon wieder entscheidet irgendwer, was für die Anwender gut ist/sein soll.   :-D

Im Topic ging's ja ursprünglich nur um das & hier, was ein Bug war/ist.
Der Rattenschwanz hinterher ergab sich nur durch die Exerimentiererei in meinem Anwenderkreis, und es ergaben sich dadurch halt ein paar interessante Fragen und Einsichten.
Ob mit diesen auch Sicherheitsprobleme verbunden sind, gilt es natürlich zu beachten.

Wer Mißbrauch betreiben will, kann das an beliebiger Stelle und mit beliebigem CMS. Einränkungen wg. Sicherheitsapekten, sollten die Nutzbarkeit natürlich nicht einschränken. Andererseits hat bisher noch niemand die Möglichkeit des <script> - Elements vermißt bzw. genutzt...........

MfG. Evaki

evaki

So, nachdem mir nun zwar nicht der Kopf schwirrt, aber ich mal 'nen Blick über'n Tellerrand riskieren wollte -
Goggel: rss javascript xss
Das Thema scheint bekannt zu sein.
https://www.cgisecurity.com/papers/HackingFeeds.pdf
https://security.stackexchange.com/questions/184772/avoid-malicious-javascript-in-rss-feeds

Schon mal gut zu wissen: "wir sind nicht allein"  :-D

DarkViper

CDATA sorgt nur dafür, dass der Inhalt der Klammer garantiert unverändert (also nicht durch den Reader geparst) übertragen wird. Was der Empfänger dann mit <script> oder <style> Tags anfängt... ist dessen Problem (oder auch nicht).
[url=http://www.youtube.com/watch?v=tmzDAz6ZvFQ]Der blaue Planet[/url] - er ist nicht unser Eigentum - wir haben ihn nur von unseren Nachkommen geliehen[br]
[i]"You have to take the men as they are... but you can not leave them like that !" :-P [/i]
[i]Das tägliche Stoßgebet: [b]Oh Herr, wirf Hirn vom Himmel ![/b][/i]

dbs

Sorry, ich hatte mit F12 geschaut. Im Quelltext sehe ich es wie du.

Die Erklärung scheint hier zu stehen:
https://ckeditor.com/docs/ckeditor4/latest/guide/dev_disallowed_content.html#how-to-allow-everything-except

Wenn alles erlaubt wird, wirken die Ausnahmen nicht. Zitat:
"A popular requirement is to allow all HTML features except a few specific ones. In this case setting CKEDITOR.config.allowedContent to true is not a solution, because this completely disables the Advanced Content Filter, so CKEDITOR.config.disallowedContent will not work either."

Eine Lösung steht da auch. Mal sehen was Dietmar sagt.
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

#18
Nix zu sehen?
Bei mir überal, diesmal mit FF und XML-Plugin:
Aufruf: modules/news/rss.php?page_id=6
 
<generator>
WebsiteBaker Content Management System
</generator>
 
<item>
- 5 children, 5 leafs
 
<title>
<![CDATA[Abendzeitung:"Pärchen beim Vögeln in der Telefonzelle erwischt"]]>
</title>
 
<description>
<![CDATA[<p>"Pärchen beim Vögeln in der Telefonzelle erwischt"</p>
<script>
document.write(markup);
  </script>
<p>Richter lehnt Bestrafung ab.</p>
]]>
</description>
 
<link>
http://localhost/posts/abendzeitung-paerchen-beim-voegeln-in-der-telefonzelle-erwischt-1.php
</link>
 
<pubDate>


ps. Anscheinend verhindert <![CDATA nicht die Ausführung von <script>, wenn ich das ganze Geraffel hier richtig nachvollzogen habe. 

Kannst ja mal statt document.write(markup); eine Referenz zu irgendeiner Homepage testen - hab' ich noch nicht gemacht - z.B. 'ne Umleitung, sollte damit angeblich funktionieren.

Bei mir läuft alles unter der aktuellen WB-Version, also keine Zeitreise in die Zukunft.
MfG. Evaki

dbs

#17
In meinem RSS ist kein <script> zu sehen. Aber auf der Newsseite.
Das kommt wohl davon, dass wir einigen hier erlauben wollten, im CK im Quelltext, einem Div auch eigene Sachen wie id, class oder sonstwas mitzugeben. Da wurde wohl gleich alles erlaubt.  :)

edit: allerdings sehe ich in der wb_ckconfig.js
config.disallowedContent = 'script; *[on*]';
[url="https://onkel-franky.de"]https://onkel-franky.de[/url]

evaki

#16
Da die RSS-Aufgabe hierbei XML-konform ist, gibt's da auch nix einfach mal per Automatik was wegzuradieren. Wenn wer etwas dort nicht zu sehen wünscht, trotz der XML-Konformität, kann <script> wohl in NEWS brachial unterbinden. Ob da nicht wie angedacht eher CSP angebracht ist, kann man überdenken.
Das sollen die DEV entscheiden, ob das relevant ist. Nicht jeder Furz braucht CSP, und - Eigenverantwortung ist auch hier gefragt. Allein die theoretische Möglichkeit kann nicht immer bei sowas herhalten.

Auf den ersten Blick ist das ja schon gemein, da so'n Script ansonsten nirgens zu entdecken ist. Sowas sieht auch keine Sicherheits-Suite, ist ja alles konform  :-D

MfG. Evaki
ps. Ich hab' überhaupt nix gemacht, die anderen...

evaki

#15
Hätt' ich genauer wiedergeben sollen.
Nun gut, dann für die Bösen  :evil:
Im BE News Kurz=
<p>"Pärchen beim Vögeln in der Telefonzelle erwischt"</p>
<script>
document.write(markup);
  </script>
<p>Richter lehnt Bestrafung ab.</p>

Der RSS-Aufruf bekommt das Script.

Aber auch klar: Darauf muß man erstmal kommen...
Und: Ich bin nicht schuld, hab' nix damit zu tun, das war'n die anderen.  :-D
MfG. Evaki