{"id":6665,"date":"2020-03-30T19:35:52","date_gmt":"2020-03-30T17:35:52","guid":{"rendered":"https:\/\/u-labs.de\/portal\/?p=6665"},"modified":"2020-04-17T15:45:36","modified_gmt":"2020-04-17T13:45:36","slug":"html-tags-wie-style-oder-iframe-im-hcl-connections-editor-erlauben-acf","status":"publish","type":"post","link":"https:\/\/u-labs.de\/portal\/html-tags-wie-style-oder-iframe-im-hcl-connections-editor-erlauben-acf\/","title":{"rendered":"HTML-Tags wie style oder iframe im HCL Connections Editor erlauben (ACF)"},"content":{"rendered":"<p>Wer bestimmte HTML-Tags wie z.B. <strong>iframe<\/strong> im Connections Editor nutzt, wird feststellen: Nach dem Speichern sind diese verschwunden. Dies liegt am <strong>Active Content Filter<\/strong>, kurz <strong>ACF<\/strong>. Historisch gab es hier sowohl Whitelist- als auch Blacklist-Ans\u00e4tze. Dementsprechend sollen <em>ungef\u00e4hrliche<\/em> Tags erlaubt bzw. <em>gef\u00e4hrliche<\/em> gefiltert werden. Vor einiger Zeit wurde auf Blacklisting umgestellt. Aktuell legt die ACF also fest, welche Tags blockiert werden. <\/p>\n<h2 class=\"wp-block-heading\">Erlauben oder nicht erlauben?<\/h2>\n<p>Standardm\u00e4\u00dfig sind darunter auch vereinzelte Tags, die man m\u00f6glicherweise aktivieren m\u00f6chte. Darunter beispielsweise die Einbettung von iFrames oder style-Bl\u00f6cken. Es ist diskutabel, ob man solche Tags zul\u00e4sst. Es gibt sowohl Vor- als auch Nachteile. Ein style-Tag erlaubt es, Editor-Beitr\u00e4ge mit eigenen CSS Klassen\/IDs aufzuh\u00fcbschen. Wer komplexere Styleanpassungen an z.B. Wiki-Seiten vornimmt, wird sich \u00fcber diese M\u00f6glichkeiten freuen. So muss nicht alles un\u00fcbersichtlich und schlecht wartbar in das style-Attribute der Tags kopiert werden.<\/p>\n<p>Allerdings spricht auch manches dagegen. Vor allem sicherheits- und datenschutztechnisch: Via iFrame k\u00f6nnen Drittanbieter-Inhalte unkontrolliert nachgeladen werden. Auch vermeintlich harmloses CSS kann fremde Quellen einbinden, beispielsweise f\u00fcr Schriftarten. Mit etwas Fantasie sind sogar Keylogger m\u00f6glich.  <\/p>\n<p>Das Thema m\u00f6chte ich an dieser Stelle nicht weiter ausf\u00fchren. Jedoch sollte man sich \u00fcber die m\u00f6glichen Risiken im klaren sein und nicht un\u00fcberlegt Tags freischalten. <strong>Von einer Freischaltung des script-Tags ist grunds\u00e4tzlich abzuraten! Das Missbrauchspotenzial durch unkontrolliertes JavaScript ist riesig.<\/strong><\/p>\n<h2 class=\"wp-block-heading\">Active Content Filter (ACF) des Connections Editor anpassen<\/h2>\n<div class=\"wp-block-group\">\n<div class=\"wp-block-group__inner-container is-layout-flow wp-block-group-is-layout-flow\">\n<h3 class=\"wp-block-heading\">LotusConnections-config Ordner auschecken<\/h3>\n<p>Der sauberste Weg besteht darin, in einer <strong>wsadmin<\/strong>-Shell mithilfe des <strong>LCConfigService<\/strong> die XML-Dateien aus- und einzuchecken. Hierzu ben\u00f6tigen wir zun\u00e4chst einen tempor\u00e4ren Ordner, in den ausgecheckt werden kann:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">mkdir \/tmp\/lc-checkout<\/code><\/pre>\n<p>Nun starten wir eine wsadmin-Shell und melden uns mit einem WebSphere-Administrator an.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"\" data-line=\"\">cd \/opt\/IBM\/WebSphere\/AppServer\/profiles\/Dmgr01\/bin\/\n.\/wsadmin.sh -lang jython<\/code><\/pre>\n<p>Der Checkout wird wie folgt durchgef\u00fchrt:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-python\" data-line=\"\">execfile(&quot;connectionsConfig.py&quot;)\nLCConfigService.checkOutConfig(&quot;\/tmp\/lc-checkout&quot;, AdminControl.getCell()))<\/code><\/pre>\n<\/div>\n<\/div>\n<p>In \/tmp\/lc-checkout\/LotusConnections-config.xml k\u00f6nnen nun \u00c4nderungen durchgef\u00fchrt werden. Es ist zu empfehlen die wsadmin-Shell ge\u00f6ffnet zu lassen, da sich dadurch das Einchecken vereinfacht.<\/p>\n<h3 class=\"wp-block-heading\">Welche Konfiguration greift f\u00fcr welche Anwendung?<\/h3>\n<p>In der <strong>LotusConnections-config.xml<\/strong> Konfigurationsdatei gibt es <strong>sloc:serviceReference<\/strong> Elemente. Sie Mappen eine Anwendung auf die dazugeh\u00f6rige XML-Konfigurationsdatei mit Filterregeln.<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-xml\" data-line=\"\">sloc:serviceReference acf_config_file=&quot;acp-configkey__default.xml&quot; bootstrapHost=&quot;admin_replace&quot; bootstrapPort=&quot;admin_replace&quot; clusterName=&quot;AppsCluster&quot; enabled=&quot;true&quot; person_card_service_name_js_eval=&quot;generalrs.label.personcard.wikislink&quot; person_card_service_url_pattern=&quot;\/home\/search?uid={userid}&amp;name={displayName}&quot; serviceName=&quot;wikis&quot; ssl_enabled=&quot;true&quot;<\/code><\/pre>\n<p>Hier kann man unter acf_config_file die jeweilige Datei mit den Regeln eintragen. Es gibt verschiedene Vorlagen:<\/p>\n<ul class=\"wp-block-list\">\n<li>acf-config.xml: Erlaubt Styling, Form-Elemente, aber entfernt Flash<\/li>\n<li>acf-config-nf.xml: Erlaubt Styling, verhindert Form-Elemente und Flash<\/li>\n<li>acf-config-nf-ns.xml: Verhindert Styling, Entfernt Form-Elemente und Flash (restriktiv)<\/li>\n<\/ul>\n<p>Weitere Dateien finden sich<a href=\"https:\/\/help.hcltechsw.com\/connections\/v6\/admin\/secure\/t_sec_change_acf_config.html\" target=\"_blank\" rel=\"nofollow\"> in der Dokumentation<\/a>. Ich nutze meist <strong>acf-config-nf.xml<\/strong>, da dies ein sinnvoller Kompromiss ist und sich die \u00c4nderungen in Grenzen halten. Eine Auflistung aller Anwendungen und deren ACF-Dateien findet man in einer Standard LotusConnections-config.xml (ohne eigene Anpassungen) wie folgt:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\"># grep &quot;acf_config_file=&quot; LotusConnections-config.xml | awk -d&#039;=&#039; &#039;{print $9 &quot;\\t\\t&quot;  $2;}&#039;\nserviceName=&quot;activities&quot;\t\tacf_config_file=&quot;acp-configkey__default.xml&quot;\nserviceName=&quot;blogs&quot;\t\tacf_config_file=&quot;acp-configkey__default.xml&quot;\nserviceName=&quot;communities&quot;\t\tacf_config_file=&quot;acp-configkey__default.xml&quot;\nserviceName=&quot;dogear&quot;\t\tacf_config_file=&quot;acp-configkey__default.xml&quot;\nserviceName=&quot;profiles&quot;\t\tacf_config_file=&quot;acf-config-nf.xml&quot;\nserviceName=&quot;wikis&quot;\t\tacf_config_file=&quot;acp-configkey__default.xml&quot;\nserviceName=&quot;forums&quot;\t\tacf_config_file=&quot;acp-configkey__default.xml&quot;<\/code><\/pre>\n<h3 class=\"wp-block-heading\">ACF-Konfiguration f\u00fcr eine Anwendung \u00e4ndern<\/h3>\n<p>Am Beispiel der Wikis-Anwendung \u00e4ndere ich daher<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-xml\" data-line=\"\">sloc:serviceReference acf_config_file=&quot;acp-configkey__default.xml&quot; serviceName=&quot;wikis&quot;<\/code><\/pre>\n<p>zu<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-xml\" data-line=\"\">sloc:serviceReference acf_config_file=&quot;acf-config-nf.xml&quot; serviceName=&quot;wikis&quot;<\/code><\/pre>\n<h3 class=\"wp-block-heading\">Einchecken der \u00c4nderung<\/h3>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-python\" data-line=\"\">LCConfigService.checkInConfig()<\/code><\/pre>\n<p>Danach muss eine vollst\u00e4ndige Neusynchronisation in der ISC durchgef\u00fchrt und die jeweilige Anwendung (hier Wikis) neu gestartet werden.<\/p>\n<h3 class=\"wp-block-heading\">ACF Vorlagen bearbeiten<\/h3>\n<p>Je nachdem was man erlauben m\u00f6chte, reicht das \u00c4ndern der ACF-Datei bereits aus. Bei den Anfangs erw\u00e4hnten iFrames ist dies nicht der Fall &#8211; hier gibt es keine passende Vorlage. Es ist jedoch m\u00f6glich, die Vorlagen anzupassen. Leider k\u00f6nnen diese nicht ausgecheckt werden. Daher bleibt keine andere Wahl, als direkt im Konfigurationsordner des Deployment-Managers zu arbeiten. Die XML-Dateien befinden sich im <strong>LotusConnections-config\/extern<\/strong> Unterverzeichnis:<\/p>\n<pre class=\"wp-block-prismatic-blocks\"><code class=\"language-bash\" data-line=\"\">vim \/opt\/IBM\/WebSphere\/AppServer\/profiles\/Dmgr01\/config\/cells\/CnxCell\/LotusConnections-config\/extern\/acf-config-nf.xml<\/code><\/pre>\n<p>Darin befinden sich einige Regeln. Diese beziehen sich auf komplette Elemente (wie z.B. <strong>iframe<\/strong>), oder aber teils auch bestimmte Attribute. Style-Bl\u00f6cke und iFrame werden beispielsweise durch folgende Regeln entfernt:<\/p>\n<pre class=\"wp-block-code\"><code class=\"\" data-line=\"\">&lt;rule tag=&#039;style&#039; action=&#039;remove-tag&#039; \/&gt;\n&lt;rule tag=&#039;iframe&#039; action=&#039;remove-tag&#039;\/&gt;<\/code><\/pre>\n<p>Diese kann man einfach auskommentieren oder entfernen. Anschlie\u00dfend einen Fullsync sowie die jeweiligen Anwendung(en), hier Wikis, neu starten. Danach sind die neuen Filterregeln verf\u00fcgbar. Entfernt man beispielsweise die iFrame-Regel, k\u00f6nnen iFrames eingef\u00fcgt werden.<\/p>\n<h2 class=\"wp-block-heading\">Wichtige Hinweise<\/h2>\n<p>Zu beachten ist, dass neue Regeln nur f\u00fcr \u00c4nderungen im Editor g\u00fcltig sind! Die ACF findet Anwendung beim Speichern. Wenn gestern jemand versucht hat iFrames einzuf\u00fcgen, werden diese durch ein heutiges Entfernen der Regel wie oben beschrieben nicht sichtbar. Alle \u00c4nderungen finden somit erst in der Zukunft Anwendung.<\/p>\n<p>Man sollte auch nicht vergessen, \u00c4nderungen bei jedem Update zu pr\u00fcfen und ggf. erneut einzuspielen. Aktuell \u00fcberschreibt Connections beispielsweise Anpassungen der Filterregeln. Das kann zu unerw\u00fcnschten Nebeneffekten f\u00fchren, wenn dies vergessen wird und die Nutzer Inhalte bearbeiten!<\/p>\n<p><strong>Beispiel<\/strong>: IFrames werden erlaubt und genutzt. Ein Connections-Update entfernt die Regel, sodass iFrames wieder verboten sind. Da dies nur f\u00fcr Bearbeitungen gilt, sieht man die iFrames in den alten Artikeln weiterhin. Wird ein solcher alter Artikel jedoch ge\u00e4ndert, greift die neue ACF &#8211; das iFrame wird somit entfernt. Was ge\u00e4ndert wird, spielt keine Rolle. Es reicht aus, wenn jemand auf &#8222;Bearbeiten&#8220; und anschlie\u00dfend &#8222;Speichern&#8220; dr\u00fcckt.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Wer bestimmte HTML-Tags wie z.B. iframe im Connections Editor nutzt, wird feststellen: Nach dem Speichern sind diese verschwunden. Dies liegt am Active Content Filter, kurz ACF. Historisch gab es hier sowohl Whitelist- als auch Blacklist-Ans\u00e4tze. Dementsprechend sollen ungef\u00e4hrliche Tags erlaubt bzw. gef\u00e4hrliche gefiltert werden. Vor einiger Zeit wurde auf Blacklisting umgestellt. Aktuell legt die ACF &#8230;<\/p>\n","protected":false},"author":5,"featured_media":6673,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[765,5],"tags":[77,760,759],"class_list":["post-6665","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hcl-connections","category-news","tag-editor","tag-hcl-connections","tag-ibm-connections"],"_links":{"self":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6665","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/comments?post=6665"}],"version-history":[{"count":13,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6665\/revisions"}],"predecessor-version":[{"id":6679,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/posts\/6665\/revisions\/6679"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media\/6673"}],"wp:attachment":[{"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/media?parent=6665"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/categories?post=6665"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/u-labs.de\/portal\/wp-json\/wp\/v2\/tags?post=6665"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}