Lösenordsskydda presentationer i PHP

Översikt

Ett öppningslösenord krypterar en presentation. Det korrekta lösenordet krävs för att läsa in och visa presentationsinnehållet, så detta skydd ger konfidentialitet.

Ett öppningslösenord skiljer sig från ett skrivskyddslösenord. Skrivskydd begränsar modifiering men krypterar inte innehållet och hindrar inte presentationen från att läsas in. För att hantera lösenord för att modifiera presentationer, se Write-Protect Presentations.

Arbetsflödena nedan gäller både PPT‑ och PPTX‑presentationer. Exemplen använder båda formaten där deras fil‑ och ström‑beteende är viktigt.

Kryptera en presentation med ett öppningslösenord

Använd ProtectionManager::encrypt för att tilldela ett öppningslösenord. Anropa sedan Presentation::save för att spara den krypterade presentationen.

Följande exempel krypterar en PPTX‑presentation:

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

Behåll dokumentegenskaper offentliga

Som standard inkluderar Aspose.Slides dokumentegenskaper i presentationskryptering. Metoden ProtectionManager::setEncryptDocumentProperties styr detta beteende oberoende av kryptering av bildinnehåll. Skicka false innan du anropar ProtectionManager::encrypt när ett indexerings‑, klassificerings‑, sök‑ eller dokumenthanteringssystem måste läsa metadata utan öppningslösenord.

Följande exempel skapar en krypterad PPTX‑presentation medan dess inbyggda dokumentegenskaper förblir offentliga:

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

Att skicka false till ProtectionManager::setEncryptDocumentProperties gör inte bilder, master‑bilder, layouter, former, media eller annat presentationsinnehåll offentliga. Det påverkar endast dokumentegenskaper. För att läsa dessa egenskaper utan att ladda det krypterade innehållet, se Manage Presentation Properties.

Läs in en krypterad presentation

Ställ in LoadOptions::setPassword till öppningslösenordet och skicka alternativet till Presentation när filen läses in. Inläsning misslyckas när ett öppningslösenord krävs men det angivna lösenordet saknas eller är felaktigt.

use aspose\slides\LoadOptions;
use aspose\slides\Presentation;

$loadOptions = new LoadOptions();
$loadOptions->setPassword("open_password");

$presentation = new Presentation("encrypted-pres.pptx", $loadOptions);
try {
    # Arbeta med den dekrypterade presentationen.
} finally {
    $presentation->dispose();
}

Ta bort kryptering från en presentation

Läs in presentationen med dess öppningslösenord, anropa ProtectionManager::removeEncryption och spara resultatet. Den sparade presentationen kan sedan läsas in utan lösenord.

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

Validera ett öppningslösenord innan inläsning

Använd PresentationFactory::getPresentationInfo för att erhålla PresentationInfo utan att skapa en komplett presentationsinstans. Kontrollera PresentationInfo::isPasswordProtected innan du begär eller validerar ett lösenord. När skydd finns, validera det angivna värdet med PresentationInfo::checkPassword.

Fil‑sökvägsarbetsflöde

Följande exempel validerar ett öppningslösenord för en PPTX‑fil, överför det validerade värdet till LoadOptions::setPassword och läser sedan in den kompletta presentationen:

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

Strömningsarbetsflöde

Ström‑överladdningen av PresentationFactory::getPresentationInfo ger samma arbetsflöde. Återställ positionen för en sökbar ström innan du läser in den kompletta presentationen från den strömmen.

Följande exempel använder en PPT‑fil:

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

return‑värden för checkPassword

PresentationInfo::checkPassword returnerar true endast när presentationen har ett öppningslösenord och det angivna lösenordet är korrekt. Den returnerar false i varje av följande fall:

  • Lösenordet är felaktigt.
  • Presentationen har inget öppningslösenord.
  • Det angivna lösenordet är null eller tomt.

Beteendet är detsamma för PPT‑ och PPTX‑presentationer.

Kontrollera om en inläst presentation är krypterad

Efter att ha läst in en presentation med rätt lösenord, inspektera ProtectionManager::isEncrypted för att bekräfta att källpresentationen var krypterad. För att upptäcka öppningslösenordsskydd innan inläsning, använd PresentationInfo::isPasswordProtected som visat ovan.

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

Säkerhetsrekommendationer

Lösenordsskydda en presentation online

  1. Öppna applikationen Aspose.Slides Lock.
  2. Välj eller ladda upp presentationen.
  3. Ange ett lösenord för visningsskydd.
  4. Ange eventuellt ett separat lösenord för redigeringsskydd.
  5. Verkställ skyddet och ladda ner den resulterande filen.

FAQ

Vad är skillnaden mellan ett öppningslösenord och ett skrivskyddslösenord?

Ett öppningslösenord krypterar presentationen och krävs för att läsa in dess innehåll. Ett skrivskyddslösenord begränsar modifiering utan att kryptera innehållet.

Kan jag validera ett öppningslösenord utan att läsa in alla bilder?

Ja. Hämta presentationsinformation, kontrollera om öppningslösenordsskydd finns och validera lösenordet innan du skapar en komplett presentationsinstans.

Kan en applikation läsa metadata utan öppningslösenord?

Ja, men endast när presentationen krypterades med dokumentegenskapskryptering inaktiverad. Applikationen måste då använda laddningsläget som endast läser dokumentegenskaper, beskrivet i Manage Presentation Properties.

Stöder lösenords‑valideringsarbetsflöden både PPT och PPTX?

Ja. Fil‑sökvägs‑ och strömbaserad lösenordsdetektering samt -validering fungerar på samma sätt för PPT‑ och PPTX‑presentationer.