Proteja Apresentações com Senha no .NET
Visão geral
Uma senha de abertura criptografa uma apresentação. A senha correta é necessária para carregar e visualizar o conteúdo da apresentação, portanto essa proteção fornece confidencialidade.
Uma senha de abertura é diferente de uma senha de proteção contra gravação. A proteção contra gravação restringe a modificação, mas não criptografa o conteúdo nem impede que a apresentação seja carregada. Para gerenciar senhas para modificar apresentações, veja Write-Protect Presentations.
Os fluxos de trabalho abaixo se aplicam tanto a apresentações PPT quanto PPTX. Os exemplos usam ambos os formatos onde seu comportamento baseado em arquivo e em fluxo é importante.
Criptografar uma apresentação com uma senha de abertura
Use IProtectionManager.Encrypt para atribuir uma senha de abertura. Em seguida, use IPresentation.Save para persistir a apresentação criptografada.
O exemplo a seguir criptografa uma apresentação PPTX:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation("pres.pptx");
presentation.ProtectionManager.Encrypt("open_password");
presentation.Save("encrypted-pres.pptx", SaveFormat.Pptx);
Manter as propriedades do documento públicas
Por padrão, o Aspose.Slides inclui as propriedades do documento na criptografia da apresentação. A propriedade IProtectionManager.EncryptDocumentProperties controla esse comportamento independentemente da criptografia do conteúdo dos slides. Defina-a como false antes de chamar IProtectionManager.Encrypt quando um sistema de indexação, classificação, busca ou gerenciamento de documentos precisar ler os metadados sem a senha de abertura.
O exemplo a seguir cria uma apresentação PPTX criptografada mantendo suas propriedades de documento internas públicas:
using Aspose.Slides;
using Aspose.Slides.Export;
using var presentation = new Presentation();
var properties = presentation.DocumentProperties;
properties.Author = "Contoso Knowledge Management";
properties.Title = "Quarterly Product Roadmap";
properties.Keywords = "roadmap, planning, internal";
presentation.Slides[0].Name = "Encrypted presentation content";
presentation.ProtectionManager.EncryptDocumentProperties = false;
presentation.ProtectionManager.Encrypt("open_password");
presentation.Save("public-properties-encrypted.pptx", SaveFormat.Pptx);
Definir EncryptDocumentProperties como false não torna slides, mestres, layouts, formas, mídia ou outro conteúdo da apresentação públicos. Afeta apenas as propriedades do documento. Para ler essas propriedades sem carregar o conteúdo criptografado, consulte Manage Presentation Properties.
Carregar uma apresentação criptografada
Defina LoadOptions.Password para a senha de abertura e passe as opções para Presentation ao carregar o arquivo. O carregamento falha quando uma senha de abertura é necessária, mas a senha fornecida está ausente ou incorreta.
using Aspose.Slides;
var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-pres.pptx", loadOptions);
// Trabalhe com a apresentação descriptografada.
Remover a criptografia de uma apresentação
Carregue a apresentação com sua senha de abertura, chame IProtectionManager.RemoveEncryption e salve o resultado. A apresentação salva pode então ser carregada sem uma senha.
using Aspose.Slides;
using Aspose.Slides.Export;
var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-pres.pptx", loadOptions);
presentation.ProtectionManager.RemoveEncryption();
presentation.Save("encryption-removed.pptx", SaveFormat.Pptx);
Validar uma senha de abertura antes de carregar
Use IPresentationFactory.GetPresentationInfo para obter IPresentationInfo sem criar uma instância completa da apresentação. Verifique IPresentationInfo.IsPasswordProtected antes de solicitar ou validar uma senha. Quando a proteção está presente, valide o valor fornecido com IPresentationInfo.CheckPassword.
Fluxo de trabalho com caminho de arquivo
O exemplo a seguir valida uma senha de abertura para um arquivo PPTX, passa o valor validado para LoadOptions.Password e então carrega a apresentação completa:
using System;
using Aspose.Slides;
var filePath = "protected-presentation.pptx";
var password = "open_password";
var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(filePath);
if (!presentationInfo.IsPasswordProtected)
{
Console.WriteLine("The presentation does not have an opening password.");
}
else if (!presentationInfo.CheckPassword(password))
{
Console.WriteLine("The opening password is incorrect.");
}
else
{
var loadOptions = new LoadOptions { Password = password };
using var presentation = new Presentation(filePath, loadOptions);
Console.WriteLine("The presentation was validated and loaded successfully.");
}
Fluxo de trabalho com fluxo
A sobrecarga de fluxo de IPresentationFactory.GetPresentationInfo fornece o mesmo fluxo de trabalho. Redefina a posição de um fluxo pesquisável antes de carregar a apresentação completa a partir desse fluxo.
O exemplo a seguir usa um arquivo PPT:
using System;
using System.IO;
using Aspose.Slides;
var password = "open_password";
using var presentationStream = File.OpenRead("protected-presentation.ppt");
var presentationInfo = PresentationFactory.Instance.GetPresentationInfo(presentationStream);
if (!presentationInfo.IsPasswordProtected)
{
Console.WriteLine("The presentation does not have an opening password.");
}
else if (!presentationInfo.CheckPassword(password))
{
Console.WriteLine("The opening password is incorrect.");
}
else
{
presentationStream.Position = 0;
var loadOptions = new LoadOptions { Password = password };
using var presentation = new Presentation(presentationStream, loadOptions);
Console.WriteLine("The presentation was validated and loaded successfully.");
}
Valores de retorno de CheckPassword
IPresentationInfo.CheckPassword retorna true somente quando a apresentação tem uma senha de abertura e a senha fornecida está correta. Retorna false em cada um destes casos:
- A senha está incorreta.
- A apresentação não possui senha de abertura.
- A senha fornecida é
nullou vazia.
O comportamento é o mesmo para apresentações PPT e PPTX.
Verificar se uma apresentação carregada está criptografada
Depois de carregar uma apresentação com a senha correta, inspecione IProtectionManager.IsEncrypted para confirmar que a apresentação original foi criptografada. Para detectar proteção por senha de abertura antes de carregar, use IPresentationInfo.IsPasswordProtected como mostrado acima.
using System;
using Aspose.Slides;
var loadOptions = new LoadOptions { Password = "open_password" };
using var presentation = new Presentation("encrypted-pres.pptx", loadOptions);
var isEncrypted = presentation.ProtectionManager.IsEncrypted;
Console.WriteLine("The presentation is encrypted: " + isEncrypted);
Recomendações de segurança
Security
Não registre senhas de abertura ou as inclua em mensagens de diagnóstico. Evite tentativas desnecessárias e repetidas de validação, mantenha as senhas na memória apenas enquanto necessário, e reutilize um resultado de validação bem‑sucedido ao carregar a apresentação imediatamente.
Propriedades públicas do documento podem revelar nomes de autores, títulos, assuntos, palavras‑chave, informações da empresa, comentários e valores personalizados, mesmo que o conteúdo da apresentação esteja criptografado. Criptografe metadados sensíveis juntamente com a apresentação. Deixar as propriedades públicas deve ser uma decisão explícita tomada apenas quando os sistemas precisam indexar, classificar, buscar ou gerenciar o arquivo sem uma senha de abertura.
Proteger uma apresentação com senha online
- Abra o aplicativo Aspose.Slides Lock.
- Selecione ou carregue a apresentação.
- Digite uma senha para proteção de visualização.
- Opcionalmente, digite uma senha separada para proteção de edição.
- Aplique a proteção e baixe o arquivo resultante.
FAQ
Qual é a diferença entre uma senha de abertura e uma senha de proteção contra gravação?
Uma senha de abertura criptografa a apresentação e é necessária para carregar seu conteúdo. Uma senha de proteção contra gravação restringe a modificação sem criptografar o conteúdo.
Posso validar uma senha de abertura sem carregar todos os slides?
Sim. Obtenha as informações da apresentação, verifique se a proteção por senha de abertura está presente e valide a senha antes de criar uma instância completa da apresentação.
Um aplicativo pode ler metadados sem a senha de abertura?
Sim, mas apenas quando a apresentação foi criptografada com EncryptDocumentProperties definido como false. O aplicativo então deve usar o modo de carregamento somente de propriedades de documento descrito em Manage Presentation Properties.
Os fluxos de trabalho de verificação de senha suportam tanto PPT quanto PPTX?
Sim. A detecção e validação de senha baseada em caminho de arquivo e em fluxo comportam‑se da mesma forma para apresentações PPT e PPTX.