Zabezpieczanie prezentacji hasłem w JavaScript
Przegląd
Hasło otwierające szyfruje prezentację. Prawidłowe hasło jest wymagane do załadowania i wyświetlenia zawartości prezentacji, dzięki czemu ochrona zapewnia poufność.
Hasło otwierające różni się od hasła zabezpieczającego przed zapisem. Zabezpieczenie przed zapisem ogranicza modyfikację, ale nie szyfruje treści ani nie uniemożliwia załadowania prezentacji. Aby zarządzać hasłami umożliwiającymi modyfikację prezentacji, zobacz Write‑Protect Presentations.
Poniższe scenariusze dotyczą zarówno prezentacji PPT, jak i PPTX. Przykłady używają obu formatów, gdzie istotne jest zachowanie oparte na plikach i strumieniach.
Zaszyfruj prezentację hasłem otwierającym
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:
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation("pres.pptx");
try {
presentation.getProtectionManager().encrypt("open_password");
presentation.save("encrypted-pres.pptx", slides.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 steruje tym zachowaniem niezależnie od szyfrowania treści slajdów. Przed wywołaniem ProtectionManager.encrypt przekaż false, jeśli system indeksowania, klasyfikacji, wyszukiwania lub zarządzania dokumentami musi odczytać metadane bez hasła otwierającego.
Poniższy przykład tworzy zaszyfrowaną prezentację PPTX, pozostawiając wbudowane właściwości dokumentu publiczne:
const slides = require("aspose.slides.via.java");
const presentation = new slides.Presentation();
try {
const 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", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Przekazanie false do ProtectionManager.setEncryptDocumentProperties nie udostępnia slajdów, szablonów, układów, kształtów, mediów ani innej zawartości prezentacji. Dotyczy wyłącznie właściwości dokumentu. Aby odczytać te właściwości bez ładowania zaszyfrowanej treści, zobacz Manage Presentation Properties.
Wczytaj zaszyfrowaną prezentację
Ustaw LoadOptions.setPassword na hasło otwierające i przekaż opcje do Presentation podczas ładowania pliku. Ładowanie kończy się niepowodzeniem, gdy wymagane jest hasło otwierające, a podane hasło jest brakujące lub nieprawidłowe.
const slides = require("aspose.slides.via.java");
const loadOptions = new slides.LoadOptions();
loadOptions.setPassword("open_password");
const presentation = new slides.Presentation("encrypted-pres.pptx", loadOptions);
try {
// Pracuj z odszyfrowaną prezentacją.
} finally {
presentation.dispose();
}
Usuń szyfrowanie z prezentacji
Wczytaj prezentację z jej hasłem otwierającym, wywołaj ProtectionManager.removeEncryption i zapisz wynik. Zapisaną prezentację można następnie wczytać bez hasła.
const slides = require("aspose.slides.via.java");
const loadOptions = new slides.LoadOptions();
loadOptions.setPassword("open_password");
const presentation = new slides.Presentation("encrypted-pres.pptx", loadOptions);
try {
presentation.getProtectionManager().removeEncryption();
presentation.save("encryption-removed.pptx", slides.SaveFormat.Pptx);
} finally {
presentation.dispose();
}
Sprawdź hasło otwierające przed wczytaniem
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 pomocy PresentationInfo.checkPassword.
Przepływ pracy z ścieżką pliku
Poniższy przykład weryfikuje hasło otwierające dla pliku PPTX, przekazuje zweryfikowaną wartość do LoadOptions.setPassword, a następnie wczytuje pełną prezentację:
const slides = require("aspose.slides.via.java");
const filePath = "protected-presentation.pptx";
const password = "open_password";
const presentationInfo = slides.PresentationFactory.getInstance().getPresentationInfo(filePath);
if (!presentationInfo.isPasswordProtected()) {
console.log("The presentation does not have an opening password.");
} else if (!presentationInfo.checkPassword(password)) {
console.log("The opening password is incorrect.");
} else {
const loadOptions = new slides.LoadOptions();
loadOptions.setPassword(password);
const presentation = new slides.Presentation(filePath, loadOptions);
try {
console.log("The presentation was validated and loaded successfully.");
} finally {
presentation.dispose();
}
}
Przepływ pracy ze strumieniem
Użyj PresentationFactory.getPresentationInfoFromStream, aby zbadać odczytywalny strumień Node.js. Po zakończeniu inspekcji strumień zostaje zużyty, więc przed wczytaniem pełnej prezentacji utwórz nowy strumień i wywołaj Presentation.createPresentationFromStream.
Poniższy przykład używa pliku PPT:
const slides = require("aspose.slides.via.java");
const fs = require("fs");
const filePath = "protected-presentation.ppt";
const password = "open_password";
const presentationFactory = slides.PresentationFactory.getInstance();
const infoStream = fs.createReadStream(filePath);
slides.PresentationFactory.getPresentationInfoFromStream(presentationFactory, infoStream, function(infoError, presentationInfo) {
if (infoError) {
console.log("The presentation information could not be read: " + infoError.message);
} else if (!presentationInfo.isPasswordProtected()) {
console.log("The presentation does not have an opening password.");
} else if (!presentationInfo.checkPassword(password)) {
console.log("The opening password is incorrect.");
} else {
const loadOptions = new slides.LoadOptions();
loadOptions.setPassword(password);
const presentationStream = fs.createReadStream(filePath);
slides.Presentation.createPresentationFromStream(presentationStream, loadOptions, function(loadError, presentation) {
if (loadError) {
console.log("The presentation could not be loaded: " + loadError.message);
} else {
try {
console.log("The presentation was validated and loaded successfully.");
} finally {
presentation.dispose();
}
}
});
}
});
Wartości zwracane przez checkPassword
PresentationInfo.checkPassword zwraca true tylko wtedy, gdy prezentacja posiada hasło otwierające i podane hasło jest prawidłowe. Zwraca false w każdym z poniższych przypadków:
- Hasło jest niepoprawne.
- Prezentacja nie ma hasła otwierającego.
- Podane hasło jest
nulllub puste.
Zachowanie jest identyczne dla prezentacji PPT i PPTX.
Sprawdź, czy wczytana prezentacja jest szyfrowana
Po wczytaniu prezentacji z prawidłowym hasłem, sprawdź ProtectionManager.isEncrypted, aby potwierdzić, że źródłowa prezentacja była zaszyfrowana. Aby wykryć ochronę hasłem otwierającym przed wczytaniem, użyj PresentationInfo.isPasswordProtected tak, jak pokazano powyżej.
const slides = require("aspose.slides.via.java");
const loadOptions = new slides.LoadOptions();
loadOptions.setPassword("open_password");
const presentation = new slides.Presentation("encrypted-pres.pptx", loadOptions);
try {
const isEncrypted = presentation.getProtectionManager().isEncrypted();
console.log("The presentation is encrypted: " + isEncrypted);
} finally {
presentation.dispose();
}
Zalecenia bezpieczeństwa
Bezpieczeństwo
Nie loguj haseł otwierających ani nie umieszczaj ich w komunikatach diagnostycznych. Unikaj niepotrzebnych, powtarzających się prób weryfikacji, przechowuj hasła w pamięci tylko tak długo, jak jest to konieczne, i 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, nawet gdy treść prezentacji jest zaszyfrowana. Zaszyfruj wrażliwe metadane wraz z prezentacją. Utrzymywanie 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 zabezpieczające podgląd.
- Opcjonalnie wprowadź oddzielne hasło zabezpieczające edycję.
- Zastosuj ochronę i pobierz wynikowy plik.
Zobacz również
FAQ
Jaka jest różnica między hasłem otwierającym a hasłem zabezpieczającym przed zapisem?
Hasło otwierające szyfruje prezentację i jest wymagane do wczytania jej zawartości. Hasło zabezpieczające przed zapisem ogranicza modyfikację bez szyfrowania treści.
Czy mogę zweryfikować hasło otwierające bez wczytywania wszystkich slajdów?
Tak. Pobierz 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żyć trybu ładowania obejmującego wyłącznie właściwości dokumentu, opisanego w Manage Presentation Properties.
Czy scenariusze sprawdzania hasła obsługują zarówno PPT, jak i PPTX?
Tak. Wykrywanie i weryfikacja hasła oparte na ścieżce pliku oraz na strumieniu działają identycznie dla prezentacji PPT i PPTX.