Ochrana prezentací heslem v JavaScriptu

Přehled

Otevírací heslo šifruje prezentaci. Správné heslo je vyžadováno k načtení a zobrazení obsahu prezentace, takže tato ochrana poskytuje důvěrnost.

Otevírací heslo se liší od hesla pro zápisovou ochranu. Ochrana proti zápisu omezuje úpravy, ale nešifruje obsah ani nebrání načtení prezentace. Pro správu hesel pro úpravu prezentací viz Write-Protect Presentations.

Níže uvedené pracovní postupy platí pro prezentace PPT i PPTX. Příklady používají oba formáty, kde je důležité jejich chování při práci se soubory i streamy.

Šifrování prezentace pomocí otevíracího hesla

Použijte ProtectionManager.encrypt k přiřazení otevíracího hesla. Poté použijte Presentation.save k uložení zašifrované prezentace.

Následující příklad šifruje PPTX prezentaci:

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();
}

Nechávat vlastnosti dokumentu veřejné

Ve výchozím nastavení zahrnuje Aspose.Slides vlastnosti dokumentu do šifrování prezentace. Metoda ProtectionManager.setEncryptDocumentProperties řízení tohoto chování nezávisle na šifrování obsahu snímků. Před voláním ProtectionManager.encrypt předávejte false, pokud musí systém pro indexaci, klasifikaci, vyhledávání nebo správu dokumentů číst metadata bez otevíracího hesla.

Následující příklad vytvoří zašifrovanou PPTX prezentaci a zároveň nechá její vestavěné vlastnosti dokumentu veřejné:

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();
}

Předání false metodě ProtectionManager.setEncryptDocumentProperties neznamená, že snímky, mastery, rozložení, tvary, média nebo jiný obsah prezentace budou veřejné. Ovlivňuje pouze vlastnosti dokumentu. Pro čtení těchto vlastností bez načtení zašifrovaného obsahu viz Manage Presentation Properties.

Načtení zašifrované prezentace

Nastavte LoadOptions.setPassword na otevírací heslo a předávejte možnosti metodě Presentation při načítání souboru. Načtení selže, pokud je vyžadováno otevírací heslo, ale poskytnuté heslo chybí nebo je nesprávné.

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 {
    // Pracujte s dešifrovanou prezentací.
} finally {
    presentation.dispose();
}

Odstranění šifrování z prezentace

Načtěte prezentaci s jejím otevíracím heslem, zavolejte ProtectionManager.removeEncryption a uložte výsledek. Uložená prezentace může být následně načtena bez hesla.

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();
}

Ověření otevíracího hesla před načtením

Použijte PresentationFactory.getPresentationInfo k získání PresentationInfo bez vytváření kompletní instance prezentace. Před požádáním o heslo nebo jeho ověřením zkontrolujte PresentationInfo.isPasswordProtected. Pokud je ochrana přítomna, ověřte poskytnutou hodnotu pomocí PresentationInfo.checkPassword.

Postup s cestou k souboru

Následující příklad ověří otevírací heslo pro soubor PPTX, předá ověřenou hodnotu metodě LoadOptions.setPassword a poté načte kompletní prezentaci:

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();
    }
}

Postup se streamem

Použijte PresentationFactory.getPresentationInfoFromStream k prozkoumání čitelného streamu Node.js. Po spotřebování inspekčního streamu vytvořte nový stream před načtením kompletní prezentace pomocí Presentation.createPresentationFromStream.

Následující příklad používá soubor 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();
                }
            }
        });
    }
});

Návratové hodnoty metody checkPassword

PresentationInfo.checkPassword vrací true pouze v případě, že prezentace má otevírací heslo a poskytnuté heslo je správné. Vrací false v každém z následujících případů:

  • Heslo je nesprávné.
  • Prezentace nemá otevírací heslo.
  • Poskytnuté heslo je null nebo prázdné.

Chování je stejné pro prezentace PPT i PPTX.

Kontrola, zda je načtená prezentace zašifrována

Po načtení prezentace se správným heslem zkontrolujte ProtectionManager.isEncrypted, abyste potvrdili, že zdrojová prezentace byla zašifrována. Pro detekci ochrany otevíracím heslem před načtením použijte PresentationInfo.isPasswordProtected podle výše uvedeného postupu.

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();
}

Doporučení pro zabezpečení

Zamknout prezentaci heslem online

  1. Otevřete aplikaci Aspose.Slides Lock.
  2. Vyberte nebo nahrajte prezentaci.
  3. Zadejte heslo pro ochranu zobrazení.
  4. Volitelně zadejte samostatné heslo pro ochranu úprav.
  5. Použijte ochranu a stáhněte výsledný soubor.

Často kladené otázky

Jaký je rozdíl mezi otevíracím heslem a heslem pro zápisovou ochranu?

Otevírací heslo šifruje prezentaci a je vyžadováno k načtení jejího obsahu. Heslo pro zápisovou ochranu omezuje úpravy, aniž by šifrovalo obsah.

Mohu ověřit otevírací heslo, aniž bych načetl všechny snímky?

Ano. Získejte informace o prezentaci, zjistěte, zda je přítomna ochrana otevíracím heslem, a ověřte heslo před vytvořením kompletní instance prezentace.

Může aplikace číst metadata bez otevíracího hesla?

Ano, ale pouze pokud byla prezentace zašifrována s vypnutým šifrováním vlastností dokumentu. Aplikace pak musí použít režim načítání pouze s vlastnostmi dokumentu, popsaný v Manage Presentation Properties.

Podporují pracovní postupy pro kontrolu hesla jak PPT, tak PPTX?

Ano. Detekce a ověřování hesla na základě cesty k souboru i streamu se chovají stejně pro prezentace PPT i PPTX.