Zabezpieczanie prezentacji hasłem w PHP
Przegląd
Hasło otwierające szyfruje prezentację. Poprawne hasło jest wymagane do załadowania i wyświetlenia zawartości prezentacji, więc ta ochrona zapewnia poufność.
Hasło otwierające różni się od hasła ochrony przed zapisem. Ochrona przed zapisem ogranicza modyfikację, ale nie szyfruje treści ani nie uniemożliwia załadowania prezentacji. Aby zarządzać hasłami do modyfikacji prezentacji, zobacz Zabezpiecz prezentacje przed zapisem.
Poniższe przepływy pracy mają zastosowanie zarówno do prezentacji PPT, jak i PPTX. Przykłady używają obu formatów, gdy ich zachowanie oparte na pliku i strumieniu jest istotne.
Zaszyfruj prezentację przy użyciu hasła otwierającego
Użyj ProtectionManager::encrypt, aby przypisać hasło otwierające. Następnie użyj Presentation::save, aby zapisać zaszyfrowaną prezentację.
Poniższy przykład szyfruje prezentację PPTX:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation("pres.pptx");
try {
$presentation->getProtectionManager()->encrypt("open_password");
$presentation->save("encrypted-pres.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Utrzymaj właściwości dokumentu publiczne
Domyślnie Aspose.Slides uwzględnia właściwości dokumentu w szyfrowaniu prezentacji. Metoda ProtectionManager::setEncryptDocumentProperties kontroluje to zachowanie niezależnie od szyfrowania zawartości slajdów. Przekaż false przed wywołaniem ProtectionManager::encrypt, gdy system indeksowania, klasyfikacji, wyszukiwania lub zarządzania dokumentami musi odczytywać metadane bez hasła otwierającego.
Poniższy przykład tworzy zaszyfrowaną prezentację PPTX, pozostawiając jej wbudowane właściwości dokumentu publiczne:
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$presentation = new Presentation();
try {
$properties = $presentation->getDocumentProperties();
$properties->setAuthor("Contoso Knowledge Management");
$properties->setTitle("Quarterly Product Roadmap");
$properties->setKeywords("roadmap, planning, internal");
$presentation->getSlides()->get_Item(0)->setName("Encrypted presentation content");
$presentation->getProtectionManager()->setEncryptDocumentProperties(false);
$presentation->getProtectionManager()->encrypt("open_password");
$presentation->save("public-properties-encrypted.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Przekazanie false do ProtectionManager::setEncryptDocumentProperties nie powoduje, że slajdy, mastery, układy, kształty, multimedia ani inna zawartość prezentacji stają się publiczne. Dotyczy to wyłącznie właściwości dokumentu. Aby odczytać te właściwości bez ładowania zaszyfrowanej treści, zobacz Zarządzaj właściwościami prezentacji.
Załaduj zaszyfrowaną prezentację
Ustaw LoadOptions::setPassword na hasło otwierające i przekaż opcje do Presentation podczas ładowania pliku. Ładowanie nie powodzi się, gdy wymagane jest hasło otwierające, ale podane hasło jest brakujące lub nieprawidłowe.
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
$loadOptions = new LoadOptions();
$loadOptions->setPassword("open_password");
$presentation = new Presentation("encrypted-pres.pptx", $loadOptions);
try {
# Pracuj z odszyfrowaną prezentacją.
} finally {
$presentation->dispose();
}
Usuń szyfrowanie z prezentacji
Załaduj prezentację przy użyciu jej hasła otwierającego, wywołaj ProtectionManager::removeEncryption i zapisz wynik. Zapisaną prezentację można następnie załadować bez hasła.
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\SaveFormat;
$loadOptions = new LoadOptions();
$loadOptions->setPassword("open_password");
$presentation = new Presentation("encrypted-pres.pptx", $loadOptions);
try {
$presentation->getProtectionManager()->removeEncryption();
$presentation->save("encryption-removed.pptx", SaveFormat::Pptx);
} finally {
$presentation->dispose();
}
Sprawdź poprawność hasła otwierającego przed załadowaniem
Użyj PresentationFactory::getPresentationInfo, aby uzyskać PresentationInfo bez tworzenia pełnej instancji prezentacji. Sprawdź PresentationInfo::isPasswordProtected przed żądaniem lub weryfikacją hasła. Gdy ochrona jest obecna, zweryfikuj podaną wartość przy użyciu PresentationInfo::checkPassword.
Przepływ pracy przy użyciu ścieżki pliku
Poniższy przykład weryfikuje hasło otwierające dla pliku PPTX, przekazuje zweryfikowaną wartość do LoadOptions::setPassword, a następnie ładuje pełną prezentację:
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\PresentationFactory;
$filePath = "protected-presentation.pptx";
$password = "open_password";
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo($filePath);
if (!$presentationInfo->isPasswordProtected()) {
echo("The presentation does not have an opening password.\n");
} elseif (!$presentationInfo->checkPassword($password)) {
echo("The opening password is incorrect.\n");
} else {
$loadOptions = new LoadOptions();
$loadOptions->setPassword($password);
$presentation = new Presentation($filePath, $loadOptions);
try {
echo("The presentation was validated and loaded successfully.\n");
} finally {
$presentation->dispose();
}
}
Przepływ pracy przy użyciu strumienia
Przeciążenie strumieniowe PresentationFactory::getPresentationInfo zapewnia ten sam przepływ pracy. Zresetuj pozycję strumienia umożliwiającego wyszukiwanie przed załadowaniem pełnej prezentacji z tego strumienia.
Poniższy przykład używa pliku PPT:
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
use aspose\slides\PresentationFactory;
$password = "open_password";
$presentationStream = new Java("java.io.FileInputStream", "protected-presentation.ppt");
try {
$presentationInfo = PresentationFactory::getInstance()->getPresentationInfo($presentationStream);
if (!$presentationInfo->isPasswordProtected()) {
echo("The presentation does not have an opening password.\n");
} elseif (!$presentationInfo->checkPassword($password)) {
echo("The opening password is incorrect.\n");
} else {
$presentationStream->getChannel()->position(0);
$loadOptions = new LoadOptions();
$loadOptions->setPassword($password);
$presentation = new Presentation($presentationStream, $loadOptions);
try {
echo("The presentation was validated and loaded successfully.\n");
} finally {
$presentation->dispose();
}
}
} finally {
$presentationStream->close();
}
Wartości zwracane przez checkPassword
Metoda PresentationInfo::checkPassword zwraca true tylko wtedy, gdy prezentacja posiada hasło otwierające i podane hasło jest poprawne. Zwraca false w każdym z następujących przypadków:
- Hasło jest niepoprawne.
- Prezentacja nie posiada hasła otwierającego.
- Podane hasło jest
nulllub puste.
Zachowanie jest takie samo dla prezentacji PPT i PPTX.
Sprawdź, czy załadowana prezentacja jest zaszyfrowana
Po załadowaniu prezentacji przy użyciu prawidłowego hasła, sprawdź ProtectionManager::isEncrypted, aby potwierdzić, że źródłowa prezentacja była zaszyfrowana. Aby wykryć ochronę hasłem otwierającym przed ładowaniem, użyj PresentationInfo::isPasswordProtected jak opisano powyżej.
use aspose\slides\LoadOptions;
use aspose\slides\Presentation;
$loadOptions = new LoadOptions();
$loadOptions->setPassword("open_password");
$presentation = new Presentation("encrypted-pres.pptx", $loadOptions);
try {
$isEncrypted = $presentation->getProtectionManager()->isEncrypted();
echo("The presentation is encrypted: " . ($isEncrypted ? "true" : "false") . "\n");
} finally {
$presentation->dispose();
}
Zalecenia bezpieczeństwa
Bezpieczeństwo
Nie rejestruj haseł otwierających ani nie umieszczaj ich w komunikatach diagnostycznych. Unikaj niepotrzebnych powtarzalnych prób weryfikacji, przechowuj hasła w pamięci tylko tak długo, jak jest to konieczne, oraz ponownie użyj wyniku udanej weryfikacji przy natychmiastowym ładowaniu prezentacji.
Publiczne właściwości dokumentu mogą ujawniać nazwiska autorów, tytuły, tematy, słowa kluczowe, informacje o firmie, komentarze i wartości niestandardowe, mimo że zawartość prezentacji jest zaszyfrowana. Szyfruj wrażliwe metadane wraz z prezentacją. Pozostawienie właściwości publicznych powinno być wyraźną decyzją podjętą tylko wtedy, gdy systemy muszą indeksować, klasyfikować, wyszukiwać lub zarządzać plikiem bez hasła otwierającego.
Zabezpiecz prezentację hasłem online
- Otwórz aplikację Aspose.Slides Lock.
- Wybierz lub prześlij prezentację.
- Wprowadź hasło do ochrony wyświetlania.
- Opcjonalnie wprowadź osobne hasło do ochrony edycji.
- Zastosuj ochronę i pobierz powstały plik.
Zobacz również
FAQ
Jaka jest różnica między hasłem otwierającym a hasłem ochrony przed zapisem?
Hasło otwierające szyfruje prezentację i jest wymagane do załadowania jej zawartości. Hasło ochrony przed zapisem ogranicza modyfikację bez szyfrowania treści.
Czy mogę zweryfikować hasło otwierające bez ładowania wszystkich slajdów?
Tak. Uzyskaj informacje o prezentacji, sprawdź, czy istnieje ochrona hasłem otwierającym, i zweryfikuj hasło przed utworzeniem pełnej instancji prezentacji.
Czy aplikacja może odczytać metadane bez hasła otwierającego?
Tak, ale tylko wtedy, gdy prezentacja została zaszyfrowana z wyłączonym szyfrowaniem właściwości dokumentu. Aplikacja musi wtedy używać trybu ładowania wyłącznie właściwości dokumentu opisanego w Zarządzaj właściwościami prezentacji.
Czy przepływy weryfikacji hasła obsługują zarówno PPT, jak i PPTX?
Tak. Wykrywanie i weryfikacja hasła oparte na ścieżce pliku i strumieniu zachowują się identycznie dla prezentacji PPT i PPTX.