Security: Fernsteuerbare DocumentDataSources

Analog zu den ViewDataSources lassen sich auch DocumentDataSources über die Adresszeile des Browsers manipulieren: Der URL-Parameter databaseName ermöglicht hierbei die Steuerung der zugrundliegenden Datenbank, und überschreibt einen eventuell in der XPage hinterlegten Wert.

<?xml version="1.0" encoding="UTF-8"?>
<xp:view xmlns:xp="http://www.ibm.com/xsp/core">
   <xp:this.data>
      <xp:dominoDocument
         var="document1"
         databaseName="DB1.nsf">
      </xp:dominoDocument>
   </xp:this.data>
     <xp:button value="Label" id="button1">
      <xp:eventHandler event="onclick"
         submit="true" refreshMode="complete">
         <xp:this.action>
            <xp:save></xp:save>
         </xp:this.action>
      </xp:eventHandler>
   </xp:button>
</xp:view>

Wird diese XPage mit dem Parameter databaseName=DB2.nsf aufgerufen und abgeschickt bzw. gespeichert, erfolgt das Anlegen des Dokumentes nicht wie definiert in der DB1.nsf, sondern in DB2.nsf.

Ebenso verhält es sich, wenn ein Dokument geöffnet wird: Auch hierbei lässt sich steuern, aus welcher Datenbank das Dokument stammten soll (in diesem Fall nur, solange keine documentId  in der XPage eingestellt ist.)

Werden mehrere DataSources auf einer XPage verwendet, werden die URL-Parameter dort angewendet, „wo es passt“, d.h. es wird die nächste DataSource (View oder Document) verwendet, die nicht mit ignoreRequestParam=“true“ abgesichert wurde.

 

EDIT:

Das Überschreiben wirkt sich auch auf Datasources aus, die nicht direkt im UIViewRoot sitzen, sondern auch auf Unterkomponenten im JSF Baum. Also auch auf DocumentDataSources und ViewDataSources in Panels etc.

Dieser Beitrag wurde unter Allgemein, JSF, Security, Server, Web, XPages abgelegt und mit , , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

4 Kommentare zu Security: Fernsteuerbare DocumentDataSources

  1. Fredrik sagt:

    Google translate isn’t translating that well on this post 😉
    Do I understand correctly that if an xpage has one datasource this could be changed using the URL parameter databaseName?

  2. Yes, the database can be changed for a datasource by this. An existing defined database in the XPage will be overwritten. But not only if you have one datasource on your page, the change will be made to the next datasource available where ignoreRequestParam=“true“ is not set.

    This will work for views too.

    For example this would create the document in the mail.box instead:
    http://www.example.com/db.nsf/example.xsp?action=createDocument&databaseName=mail.box

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.


*