Schreibschutz für Präsentationen in PHP

Einleitung

Ein Schreibschutz‑Passwort schränkt die Änderung einer Präsentation ein, verschlüsselt jedoch nicht deren Inhalt. Benutzer können eine schreibgeschützte Präsentation ohne das Passwort laden und anzeigen. Je nach Anwendung können sie den Inhalt möglicherweise auch bearbeiten und unter einem anderen Namen speichern, sodass Schreibschutz nicht als Vertraulichkeits‑Mechanismus betrachtet werden sollte.

Ein Öffnungs‑passwort hat einen anderen Zweck: Es verschlüsselt die Präsentation und ist zum Laden des Inhalts erforderlich. Zum Verschlüsseln einer Präsentation oder zum Validieren eines Öffnungs‑passworts siehe Password-Protect Presentations.

Die in diesem Artikel beschriebenen Workflows gelten sowohl für PPT‑ als auch PPTX‑Präsentationen. Die Beispiele verwenden PPTX‑Dateien; beim Speichern im PPT‑Format verwenden Sie die Erweiterung .ppt und das entsprechende PPT‑Speicherformat.

Schreibschutz für eine Präsentation festlegen

Verwenden Sie ProtectionManager::setWriteProtection, um ein Passwort zum Ändern einer Präsentation festzulegen. Beim Speichern der Präsentation wird die Schutzeinstellung beibehalten.

Das folgende Beispiel legt einen Schreibschutz für eine PPTX‑Präsentation fest:

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("pres.pptx");
try {
    $presentation->getProtectionManager()->setWriteProtection("modify_password");
    $presentation->save("write-protected-pres.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Eine schreibgeschützte Präsentation laden

Da Schreibschutz den Präsentationsinhalt nicht verschlüsselt, ist zum Laden der Präsentation kein Passwort erforderlich. Das Passwort ist nur relevant, wenn die Berechtigung zum Ändern der geschützten Präsentation geprüft werden soll.

use aspose\slides\Presentation;

$presentation = new Presentation("write-protected-pres.pptx");
try {
    echo("Slide count: " . $presentation->getSlides()->size() . "\n");
} finally {
    $presentation->dispose();
}

Übergeben Sie kein Schreibschutz‑Passwort an LoadOptions::setPassword. Diese Methode akzeptiert ein Öffnungs‑passwort für verschlüsselten Inhalt. Hat eine Präsentation beide Schutzarten, übergeben Sie das Öffnungs‑passwort zum Laden und behandeln Sie das Schreibschutz‑Passwort separat.

Schreibschutz von einer Präsentation entfernen

Verwenden Sie ProtectionManager::removeWriteProtection, um die Änderungsbeschränkung zu entfernen, und speichern Sie anschließend die Präsentation.

use aspose\slides\Presentation;
use aspose\slides\SaveFormat;

$presentation = new Presentation("write-protected-pres.pptx");
try {
    $presentation->getProtectionManager()->removeWriteProtection();
    $presentation->save("write-protection-removed.pptx", SaveFormat::Pptx);
} finally {
    $presentation->dispose();
}

Prüfen, ob eine Präsentation schreibgeschützt ist

Um eine Datei zu untersuchen, ohne eine komplette Presentation-Instanz zu erstellen, rufen Sie PresentationFactory::getPresentationInfo auf und prüfen Sie PresentationInfo::isWriteProtected. Die Methode verwendet NullableBool und gibt NullableBool::True zurück, wenn ein Schreibschutz erkannt wird.

use aspose\slides\NullableBool;
use aspose\slides\PresentationFactory;

$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo("write-protected-pres.pptx");

if ($presentationInfo->isWriteProtected() == NullableBool::True) {
    echo("The presentation is write protected.\n");
} else {
    echo("Write protection was not detected.\n");
}

Die Stream‑Überladung von PresentationFactory::getPresentationInfo liefert dieselben Informationen für eine als Stream bereitgestellte Präsentation.

Schreibschutz‑Passwort validieren

Verwenden Sie PresentationInfo::checkWriteProtection, um ein Änderungs‑passwort zu validieren, ohne die komplette Präsentation zu laden. Prüfen Sie zuerst PresentationInfo::isWriteProtected, damit die Anwendung nur dann ein Passwort anfordert oder validiert, wenn ein Schreibschutz vorhanden ist.

use aspose\slides\NullableBool;
use aspose\slides\PresentationFactory;

$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo("write-protected-pres.pptx");

if ($presentationInfo->isWriteProtected() != NullableBool::True) {
    echo("The presentation is not write protected.\n");
} elseif ($presentationInfo->checkWriteProtection("modify_password")) {
    echo("The write-protection password is correct.\n");
} else {
    echo("The write-protection password is incorrect.\n");
}

PresentationInfo::checkWriteProtection prüft nur das Schreibschutz‑Passwort. Es validiert kein Öffnungs‑passwort und ermittelt nicht, ob verschlüsselter Inhalt geladen werden kann. Im Gegensatz dazu prüft PresentationInfo::checkPassword ausschließlich ein Öffnungs‑passwort. Wurde bereits eine komplette Präsentation geladen, liefert ProtectionManager::checkWriteProtection die entsprechende Schreibschutzprüfung über seinen Schutz‑Manager.

In Produktionsanwendungen sollten Passwörter nicht protokolliert oder in Diagnosemeldungen aufgenommen werden. Vermeiden Sie unnötige wiederholte Validierungsversuche und halten Sie Passwörter im Speicher nur so lange, wie sie benötigt werden.

FAQ

Verschlüsselt Schreibschutz eine Präsentation?

Nein. Er beschränkt Änderungen, lässt jedoch den Präsentationsinhalt zum Laden und Anzeigen verfügbar.

Ist das Schreibschutz‑Passwort zum Öffnen einer Präsentation erforderlich?

Nein. Nur ein Öffnungs‑passwort ist zum Laden von verschlüsseltem Präsentationsinhalt erforderlich.

Kann eine Präsentation sowohl ein Öffnungs‑passwort als auch ein Schreibschutz‑Passwort haben?

Ja. Geben Sie das Öffnungs‑passwort über die Ladeoptionen an, um die verschlüsselte Präsentation zu öffnen, und prüfen Sie das Schreibschutz‑Passwort separat, wenn eine Änderungsberechtigung erforderlich ist.