Sicherheit — Advanced Snippet Editor

Erstellt: 2026-05-30 · Aktualisiert: 2026-05-31

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:

  • oSlidenicht verfügbar
  • aPowerPointnicht verfügbar
  • Helper.* (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
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
Type.GetType Reflection — potentiell gefährlich
System.Reflection Reflection-Nutzung
System.Runtime.InteropServices Native Interop

5. Assembly-Einschränkung

Die Roslyn-Scriptumgebung lädt nur explizit zugelassene Assemblies. System.dll — das Sammel-Assembly mit System.Net, System.IO und System.Diagnostics — ist bewusst nicht geladen. Ein Script das z.B. new HttpClient() schreibt, schlägt daher bereits beim Kompilieren fehl, selbst wenn der Code-Scanner es übersehen hätte.

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.

Library Admin Guide