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 |
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.