Sicherheit — Advanced Snippet Editor
Der Advanced Snippet Editor führt C#-Code zur Laufzeit aus. PPPTools schützt dein System durch mehrere Sicherheitsschichten, bevor ein Script ausgeführt wird.
Sicherheits-Schichten
1. Eingeschränkte API
Scripts im Advanced Snippet Editor haben keinen direkten Zugriff auf die PowerPoint-Objekte. Alle Operationen laufen ausschliesslich über ppptools.*-Methoden:
oSlide→ nicht verfügbaraPowerPoint→ nicht verfügbarHelper.*(alte API) → nicht verfügbar
Das verhindert unkontrollierten Zugriff auf die PowerPoint-Anwendung.
2. Code-Scanner
Bevor ein Script ausgeführt wird, prüft PPPTools den Code automatisch auf bekannte gefährliche Muster. Erkannte Probleme führen entweder zu einer Warnung oder zum Blockieren des Scripts:
| Stufe | Verhalten |
|---|---|
| Blocked | Script wird nicht ausgeführt. Fehler wird im Editor angezeigt. |
| Warning | Script wird ausgeführt, ein Hinweis wird angezeigt. |
| Clean | Keine Auffälligkeiten. |
3. Blockierte Muster
Die folgenden Muster werden im Code-Scanner erkannt und blockieren die Ausführung:
| Muster | Grund |
|---|---|
oSlide |
Veraltete API — nicht mehr verfügbar |
aPowerPoint |
Veraltete API — nicht mehr verfügbar |
Helper. |
Veraltete Hilfsklasse — nicht mehr verfügbar |
System.Net |
Netzwerkzugriff verboten |
HttpClient |
HTTP-Anfragen verboten |
WebClient |
HTTP-Anfragen verboten |
System.IO |
Dateizugriff verboten |
File.Write |
Datei schreiben verboten |
File.Delete |
Datei löschen verboten |
System.Diagnostics.Process |
Prozess-Start verboten |
Process.Start |
Prozess-Start verboten |
Microsoft.Win32 |
Registry-Zugriff verboten |
Registry.SetValue |
Registry schreiben verboten |
Activator.CreateInstance |
Dynamisches Laden verboten |
Assembly.Load |
Assembly laden verboten |
Type.GetType |
Reflection — verboten |
System.Reflection |
Reflection — verboten |
GetMethod |
Reflection — verboten |
Invoke |
Reflection — verboten |
InvokeMember |
Reflection — verboten |
DllImport |
Native DLL-Aufrufe verboten |
unsafe |
Pointer-Code (Unsafe-Blöcke) verboten |
extern |
Externe Methoden-Deklarationen verboten |
Environment.Exit |
Beendet den PowerPoint-Prozess — verboten |
GC.Collect |
Manuelle Garbage-Collection verboten |
4. Warnungs-Muster
Die folgenden Muster erzeugen eine Warnung, aber blockieren die Ausführung nicht:
| Muster | Grund |
|---|---|
System.Runtime.InteropServices |
Native Interop |
Reflection ist seit Juli 2026 blockiert
Type.GetType, System.Reflection, GetMethod, Invoke und InvokeMember waren früher nur Warnungen und liessen sich wegklicken. Sie sind jetzt Blocked — für das Zeichnen von Objekten gibt es keinen legitimen Grund, sie zu verwenden.
5. Assembly-Einschränkung
Die Roslyn-Scriptumgebung lädt nur explizit zugelassene Assemblies. System.dll — mit System.Net und System.Diagnostics — ist bewusst nicht geladen. Ein Script das z.B. new HttpClient() oder Process.Start(...) schreibt, schlägt daher bereits beim Kompilieren fehl, selbst wenn der Code-Scanner es übersehen hätte.
Dateizugriff ist ein Sonderfall: System.IO.File und System.IO.Directory liegen nicht in System.dll, sondern in mscorlib — und die wird für Grundtypen wie string und int zwingend benötigt. Hier greift deshalb allein der Code-Scanner: System.IO ist als Muster blockiert, und seit Reflection ebenfalls blockiert ist, gibt es auch keinen Umweg mehr darüber.
6. Timeout (30 Sekunden)
Jede Script-Ausführung wird nach 30 Sekunden automatisch abgebrochen. Das verhindert, dass ein while(true){} PowerPoint dauerhaft einfriert.
Trust-Dialog (Öffentliche Bibliothek)
Snippets aus der öffentlichen Bibliothek werden vor der ersten Ausführung durch ein Trust-Dialog bestätigt:
- PPPTools zeigt den Namen, die Beschreibung und den Autor des Snippets
- Der Nutzer bestätigt explizit, dass er dem Snippet vertraut
- Erst danach wird der Code ausgeführt
Snippets aus der eigenen lokalen Bibliothek sind immer vertrauenswürdig (sie wurden selbst erstellt).
Kein Support für eigene Scripts
Wichtiger Hinweis
PPPTools bietet für selbst erstellte Scripts keinen Support.
Fehlerhafte oder böswillige Scripts können unerwartete Auswirkungen auf die geöffnete Präsentation haben.
Scripts aus der öffentlichen Bibliothek wurden geprüft, aber PPPTools übernimmt keine Haftung.
Für Administratoren
Der Code-Scanner läuft beim Draft-Upload zweimal: einmal im Add-in (vor dem HTTP-Request) und einmal auf dem Server (beim Empfang des ZIP). Das stellt sicher, dass auch Uploads die am Add-in vorbei direkt an die API geschickt werden, geprüft werden.
| Scan-Ergebnis | Was passiert |
|---|---|
| Blocked | Draft wird nicht gespeichert (HTTP 422 mit Begründung) |
| Warning | Draft wird gespeichert, im Admin-Bereich mit gelbem Badge markiert |
| Clean | Draft wird gespeichert, im Admin-Bereich mit grünem Badge markiert |
Hinweis für Autoren
Ein Warning-Badge bedeutet nicht automatisch, dass das Script gefährlich ist — es bedeutet, dass der Admin den Code manuell ansehen wird. Wenn du Reflection oder Interop legitim verwendest, erkläre das kurz in der Snippet-Beschreibung.