Ich könnte mir vorstellen, dass man dem Evaluate ein Kontextdokument aus der aktuellen DB übergeben muss.
und noch was, bitte in Evaluates keine Strings berechnen
Evaluate(|@ExpandNameList( @Subset(@DbName;1) ; "| + tmplist(i) +|")|)
sondern besser so machen
dim doc as new NotesDocument(db);
doc.data = tmplist(i)
v= Evaluate(|@ExpandNameList( @Subset(@DbName;1) ; data)|,doc)
Grund 1: die Formel wird gleich vorcompiliert (der Designer meckert z.B. beim Speichern schon wenn ein Fehler enthalten ist)
Grund 2: es lässt sich im ersten Beispiel Schadcode einfügen, angenommen tmpList(i) enthält folgende aufzulösende "Gruppe":
dummy");@SetProfileField("admin";"Autoren";"*
(kannst ja mal oben einsetzen was dann für eine Formel ausgefuhrt wird)
Durch Kenntnis der DB könnte man so ein entsprechend präpariertes Dokument einem Admin unterschieben.... nicht auszudenken was dann alles passiert :-P -> http://xkcd.com/327/ ;)
Gruß
Roland
ExpandNameList funktioniert mit großer Sicherheit dann nicht, wenn das Ergebnis der Auflösung >64K ist.
Im Hinterkopf habe ich auch noch dass es in lokalen Repliken nicht funktioniert, bzw wenn kein Zugriff auf das Adressbuch möglich ist.
die Code-Zeile habe ich nicht selber programmiert, sondern sie ist eine Original-Zeile auf dem Lotus Notes Template "StdR7ResourceReservation version 7.03 (05.07.2007)".
um so schlimmer :o muss ich bei Gelegenheit direkt mal einen Exploit basteln ;)
Gruß
Roland