{"id":495,"date":"2012-01-12T22:22:20","date_gmt":"2012-01-12T20:22:20","guid":{"rendered":"http:\/\/hasselba.ch\/blog\/?p=495"},"modified":"2012-01-13T14:48:26","modified_gmt":"2012-01-13T12:48:26","slug":"security-fernsteuerbare-documentdatasources","status":"publish","type":"post","link":"https:\/\/hasselba.ch\/blog\/?p=495","title":{"rendered":"Security: Fernsteuerbare DocumentDataSources"},"content":{"rendered":"<p>Analog zu den <a title=\"Security: Fernsteuerbare ViewDataSources\" href=\"https:\/\/hasselba.ch\/blog\/?p=470\">ViewDataSources<\/a> lassen sich auch DocumentDataSources \u00fcber die Adresszeile des Browsers manipulieren: Der URL-Parameter <em>databaseName<\/em> erm\u00f6glicht hierbei die Steuerung der zugrundliegenden Datenbank, und \u00fcberschreibt einen eventuell in der XPage hinterlegten Wert.<\/p>\n<pre>&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n&lt;xp:view xmlns:xp=\"http:\/\/www.ibm.com\/xsp\/core\"&gt;\r\n\u00a0\u00a0 &lt;xp:this.data&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xp:dominoDocument\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 var=\"document1\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 databaseName=\"DB1.nsf\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xp:dominoDocument&gt;\r\n\u00a0\u00a0 &lt;\/xp:this.data&gt;\r\n\u00a0\u00a0\u00a0\u00a0 &lt;xp:button value=\"Label\" id=\"button1\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xp:eventHandler event=\"onclick\"\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 submit=\"true\" refreshMode=\"complete\"&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xp:this.action&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;xp:save&gt;&lt;\/xp:save&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xp:this.action&gt;\r\n\u00a0\u00a0\u00a0\u00a0\u00a0 &lt;\/xp:eventHandler&gt;\r\n\u00a0\u00a0 &lt;\/xp:button&gt;\r\n&lt;\/xp:view&gt;<\/pre>\n<p>Wird diese XPage mit dem Parameter <em>databaseName=DB2.nsf<\/em> aufgerufen und abgeschickt bzw. gespeichert, erfolgt das Anlegen des Dokumentes nicht wie definiert in der <em>DB1.nsf<\/em>, sondern in <em>DB2.nsf<\/em>.<\/p>\n<p>Ebenso verh\u00e4lt es sich, wenn ein Dokument ge\u00f6ffnet wird: Auch hierbei l\u00e4sst sich steuern, aus welcher Datenbank das Dokument stammten soll (in diesem Fall nur, solange keine <em>documentId<\/em>\u00a0 in der XPage eingestellt ist.)<\/p>\n<p>Werden mehrere DataSources auf einer XPage verwendet, werden die URL-Parameter dort angewendet, &#8222;wo es passt&#8220;, d.h. es wird die n\u00e4chste DataSource (View oder Document) verwendet, die nicht mit <em>ignoreRequestParam=&#8220;true&#8220;<\/em> abgesichert wurde.<\/p>\n<p>&nbsp;<\/p>\n<p><strong>EDIT:<\/strong><\/p>\n<p>Das \u00dcberschreiben wirkt sich auch auf Datasources aus, die nicht direkt im <em>UIViewRoot<\/em> sitzen, sondern auch auf Unterkomponenten im JSF Baum. Also auch auf <em>DocumentDataSources<\/em> und <em>ViewDataSources<\/em> in Panels etc.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Analog zu den ViewDataSources lassen sich auch DocumentDataSources \u00fcber die Adresszeile des Browsers manipulieren: Der URL-Parameter databaseName erm\u00f6glicht hierbei die Steuerung der zugrundliegenden Datenbank, und \u00fcberschreibt einen eventuell in der XPage hinterlegten Wert. &lt;?xml version=&#8220;1.0&#8243; encoding=&#8220;UTF-8&#8243;?&gt; &lt;xp:view xmlns:xp=&#8220;http:\/\/www.ibm.com\/xsp\/core&#8220;&gt; \u00a0\u00a0 &lt;xp:this.data&gt; &hellip; <a href=\"https:\/\/hasselba.ch\/blog\/?p=495\">Weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1,26,35,82,81,74],"tags":[7,11,86,90,16,12,3],"class_list":["post-495","post","type-post","status-publish","format-standard","hentry","category-allgemein","category-jsf","category-security","category-server","category-web","category-xpages","tag-domino","tag-http","tag-jsf","tag-security","tag-server","tag-web","tag-xpages"],"_links":{"self":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/495","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=495"}],"version-history":[{"count":7,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/495\/revisions"}],"predecessor-version":[{"id":501,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=\/wp\/v2\/posts\/495\/revisions\/501"}],"wp:attachment":[{"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=495"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=495"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/hasselba.ch\/blog\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=495"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}