Este artigo foi traduzido por máquina.

Assinaturas digitais

Diretrizes para aplicativos sobre práticas de assinatura digital para a segurança com critérios comuns

Jack Davis

A transição de documentos em papel com assinaturas escritas à mão para arquivos eletrônicos com assinaturas digitais está movendo um ritmo rápida. Para atender às necessidades do usuário e requisitos de certificação, documentos eletrônicos com assinaturas digitais precisam fornecer a mesma funcionalidade e segurança assinado oferta de documentos de papel manualmente. Este artigo descreve como você, como um desenvolvedor de software, pode fazer exatamente isso: projetar aplicativos que têm funcionalidade interna de assinatura digital que atenda aos requisitos de segurança ISO/IEC 15408 Common Criteria.

No território de documentos e arquivos de dados, assinaturas digitais fornecem dois recursos principais:

  • Identificar o originador (signatário) do conteúdo do documento ou arquivo
  • Verifique se as informações assinadas não tenha sido alteradas após a assinatura foi aplicada

Além do princípio básico de “ que você consulte é que você assinar ” (WYSIWYS), você e seus designers UI precisam estar ciente das várias considerações de usuário e segurança adicional ao criar aplicativos que oferecem suporte a assinaturas digitais. Você também precisa compreender as questões de segurança que podem afetar seus produtos na reunião de requisitos de certificação. Certificações, tais como aqueles para segurança ISO/IEC 15408 Common Criteria, fornecem organizações e usuários um confiável maneira de identificar produtos que foram testados para atender aos padrões de segurança e usabilidade. Cada vez mais, certificação de segurança independente está se tornando um pré-requisito em decisões de compra.

No final deste artigo, você compreenderá melhor o intervalo de questões associadas a assinaturas digitais e a necessidade de limpar, precisa e aberta divulgação para os usuários inerente.

ISO/IEC 15408 Common Criteria Security Certification

Common Criteria suportada pela International Organization para Standardization (ISO) e a International Electrotechnical Commission (IEC), é um conjunto de metodologias projetado para avaliar e certificam os recursos de segurança de produtos de tecnologia de informações. Técnicas de segurança de critérios comuns são publicadas em padrões ISO/IEC 15408 e 18045.

Na data de publicação deste artigo, o padrão de segurança Common Criteria foi aprovado e adotada pelo 26 países. Você pode encontrar uma lista de membros de critérios comuns em commoncriteriaportal.org/members.html.

XML abertos do Office e Open Packaging Conventions

2008, ISO/IEC aprovada e adotado OOXML (XML de abrir de Office) como um padrão internacional aberto. O componente OPCS (Open Packaging Conventions) do OOXML fornece uma tecnologia de arquivo de contêiner padrão da indústria. OPC combina o uso de XML e ZIP para habilitar aplicativos definir formatos de arquivo são abertos e facilmente acessíveis. OPC também define funcionalidade para oferecer suporte a assinaturas digitais, propriedades de metadados e relações de conteúdo. Acesso a dados de aplicativo e OPC elementos é fornecido através de um conjunto comum de APIs.

Microsoft Word (.docx), o Excel (.xlsx) e o PowerPoint (.pptx) e o XML Paper Specification (.xps) são exemplos de formatos de arquivo OPC baseado e cada emprega sua própria organização conteúda exclusiva (esquema) que está associada um aplicativo específico. Cada formato de arquivo OPC também pode definir sua própria diretiva de assinatura para assinaturas digitais. Um formato de arquivo de diretiva de assinatura Especifica o conteúdo que itens devem ser assinados, o que itens opcionalmente podem ser assinados e quais itens não devem ser assinado como parte do processo de assinatura ou validação de assinatura digital.

Neste artigo, você aprenderá mais sobre como validar e exibir informações de assinatura armazenadas com documentos eletrônicos assinados digitalmente. Essas considerações de design são baseadas na funcionalidade de assinatura digital fornecida pelo componente OPC dos padrões ISO/IEC 29500 e XML abertos do ECMA 376 Office. Tenha em mente que a assinatura digital, assinatura diretivas dos formatos de arquivo específicos com base OPC pode empregar apenas um subconjunto de opções de assinatura descrito neste artigo.

Assinaturas digitais

Formatos de arquivo OPC, como os descritos OOXML, usam certificados X.509 e assinatura digital XML (W3C, 2008) tecnologias fornecem dois elementos de segurança:

  • Identidade repúdio com segurança identifica o grupo ou individual origina uma assinatura.
  • Validação de conteúdo com segurança garante que todo o conteúdo assinado está presente e não tenha sido modificado de alguma forma depois foi assinado.

Uma alteração para qualquer parte de uma assinatura digital ou para qualquer conteúdo assinado pela assinatura será detectada durante a validação de assinatura e o usuário será notificado por uma mensagem de erro a assinatura é quebrada.

Algumas figuras neste artigo são mensagens de status para o usuário ou notificação de amostra. Se eles confirmar o sucesso ou falha de validação de assinatura ou realce recursos especiais que o usuário deve estar ciente, eles representam o tipo de redação claro e específico, que você deve usar. Seu aplicativo define quando e onde o usuário vê essas mensagens de status da assinatura digital. Validação de assinatura digital às vezes é agendada para executar automaticamente sempre que for aberto um documento assinado. Nesse caso, a mensagem seria exibida quando um usuário abre o documento. Se o usuário é necessária para executar a validação de assinatura digital manualmente através de uma seleção de menu, convém apresentar o status da assinatura em uma caixa de diálogo pop-up. Você e seu designer UI ter alguns leeway no posicionamento dessas mensagens de usuário e intervalo — Lembre-se apenas para torná-las como intuitiva e fácil para entender como possíveis.

Assinatura categorias

Obtendo seu aplicativo para relatar êxito ou Falha ao verificar a integridade do conteúdo assinado e a assinatura é a primeira etapa em escrever um programa seguro digitalmente. Você também precisa considerar vários tipos de conteúdo que encontrarão seu aplicativo.

No formulário mais simples de assinatura, chamado assinatura abrangente, um usuário aplica a própria assinatura para todo o conteúdo em um único documento. Assinatura digital e conteúdo assinado posteriormente verificadas e relatados como válida ou inválida. Figura 1 é que um exemplo do tipo de mensagem de status da assinatura digital um usuário veria.

Figura 1 assinatura da mensagem de usuário de amostra para abrangente

Elementos de documento em quatro categorias adicionais também precisam ser considerados para evitar confusão ou equivocada confiança suposições:

  • Conteúdo não assinado
  • Grupos de conteúdo assinados
  • Conteúdo referenciado externamente
  • Conteúdo dinâmico

Assinatura abrangente

A maioria das pessoas estão muito familiarizados com assinatura documentos em papel e contratos. Indivíduos iniciais de cada página ou o sinal do final de um documento para se identificar e confirmar sua revisão, aprovação e aceitação.

Como mencionado anteriormente, mais simples e mais simples caso no documento digital a assinatura é assinatura abrangente. Para ser classificado como esse tipo de assinatura, todo o conteúdo associado ao arquivo de documento deve atender aos seguintes quatro critérios:

  • Todos os itens de conteúdo estão localizados em um pacote único documento.
  • Todos os itens de conteúdo são estáticos.
  • Não existem vínculos ou referências ao conteúdo externo.
  • Todos os itens de conteúdo no pacote do documento são assinados.

Para um documento ser totalmente estático, elementos de conteúdo não podem conter qualquer dinamicamente alterable itens como texto criado por meio de macros ou entrada de fontes externas. Quando todos os elementos de conteúdo em um arquivo de documento estático são assinados, a assinatura digital e conteúdo assinado podem ser verificados com um resultado resumo relatar a assinatura e o conteúdo associado assinado como válida ou inválida.

Do Figura 2, 1 assinatura assina documento partes r , s e t . Verificará uma validação posterior executada na assinatura que assinatura 1 ainda está intacta e válido e que cada um dos seus associado assinado partes (de r , s e t ) não tiver sido alterado após sendo assinado.


Figura 2 assinatura única assinado conteúdo

Figura 3 ilustra uma variação na assinatura, na qual as assinaturas de dois (ou mais) são aplicadas a um documento. Várias assinaturas geralmente ocorrem em um ciclo de revisão e aprovação requer indivíduos indicar sua aprovação e aceitação de um documento após revisá-lo. No formulário, cada assinatura pode ser verificada independentemente juntamente com as partes do documento assinado associado.


Figura 3 múltipla assinatura assinado conteúdo

Você pode usar o método e propriedade a seguir para verificar assinaturas e identificar cada assinante em uma situação de validação conteúdo assinado e assinatura.

Conteúdo não assinado

Conteúdo não assinado é um risco potencial à associação de confiança implícita. Com documentos de papel, as pessoas comumente sinal ou páginas iniciais para se identificar e confirmar sua revisão e aprovação. Quaisquer páginas esquerda não assinados (ou adicionado posteriormente páginas como não assinadas) não tem nenhuma associação formal ou peso legal com o signatário.

Em documentos digitais, a validação de assinatura digital e seu conteúdo relacionado verifica que o usuário pode confiar a assinatura e o conteúdo assinado associado. Infelizmente, muitos usuários nontechnical não têm experiência para diferenciar entre assinaturas digitais, conteúdo assinado, conteúdo sem assinatura e o recipiente no qual os componentes de documento são compactados. Se apenas uma validação positiva de uma assinatura digital e seu conteúdo assinado é exibida, os usuários podem assumir incorretamente a validação estende para o pacote inteiro, poderia incluir conteúdo não assinado que não deve ser associado com uma assinatura confiável. Conteúdo não assinado não tem nenhuma fonte identificável e pode ser adicionada depois outros componentes são assinados ou modificados dentro do pacote do documento.

Associações de confiança de assinatura precisam ser claro para todos os usuários. Os usuários devem estar ciente de conteúdo não assinado incluído dentro de qualquer pacote e fornecido com um meio de distinguir claramente do conteúdo assinado confiável. Figura 4 mostra que o tipo de mensagem usuários deve receber para alerta para conteúdo não assinado dentro de um documento assinado digitalmente válido.

Figura 4Mensagem de usuário de amostra para conteúdo sem assinatura

Do Figura 5, documento partes m e n são assinados em podem ser validados com assinatura 1. O mesmo pacote de documento também contém partes não assinados x e de y de que não pode ser validado. Partes do x e de y são independentes e não associado, até mesmo implicitamente, assinatura 1.


Figura 5 assinado Document que inclui Parts sem assinatura

Você pode usar as seguintes propriedades, método e pseudocódigo para identificar os pacotes que contêm partes não assinados:

O pseudocódigo a seguir determina se quaisquer partes em um pacote do documento não estão assinadas:

PackageDigitalSignatureManager dsm = new PackageDigitalSignatureManager(package);
PackagePartCollection partCollection = Package.GetParts();
foreach (PackagePart part in partCollection)
    foreach (PackageDigitalSignature signature in dsm.Signatures)
    {
        // Search if "part" is included in signature.SignedParts.
        // If "part" is included in signature.SignedParts
        //     then it is a signed part
        //     else it is an unsigned part
    }

Assinado Content Groups

Um documento com vários grupos de conteúdo assinados é outro risco para confiança implícita pela associação. Com documentos de papel, um indivíduo pode assinar páginas em uma seção e uma segunda pessoa pode assinar páginas em uma seção separada. A assinatura e as páginas as primeira sinais individuais não têm nenhuma associação formal com as páginas os segundo sinais individuais. Da mesma forma, a assinatura e páginas sinais segundo individuais não têm nenhuma associação formal com as páginas de primeiro individuais sinais. Somente páginas cosigned por ambos os indivíduos representam uma associação conjunta. Um exemplo de grupos de conteúdo assinados é um documento no qual o corpo é escrito e assinado por um indivíduo e seções apêndice adicionadas para referência são escritas e assinadas por outras pessoas.

Em alguns formatos de arquivo diferentes elementos de conteúdo poderiam ser assinados por indivíduos diferentes. Os usuários precisam saber que quando se relacionam assinaturas para diferentes grupos de conteúdo são independentes uma da outra e que cada assinatura e o grupo de conteúdo devem ser validados separadamente. Figura 6 mostra uma mensagem de usuário poderia acompanhar um documento com grupos de conteúdo assinados.

Figura 6 do exemplo User mensagens para grupos de conteúdo assinados

Na Figura 7de , documento partes r , s e t são assinados e validados com assinatura 1 e documento partes x , de y e z são assinados e validados com assinatura 2. Duas assinaturas e seus grupos relacionados de conteúdo são independentes e não associada a si mesmo Embora estão contidos no mesmo documento.


Figura 7 do dois grupos assinados

Em uma variação Figura 7 do Figura 8 ilustra uma situação na qual uma ou mais partes do documento são cosigned com dois ou mais assinaturas. Enquanto a assinatura 1 e 2 de assinatura em conjunto assinar um ou mais itens comuns (grupo C), a relação de assinatura para assinatura 1 com um grupo e assinatura 2 com grupo B permanece independentes e não associados com o outro. Descrever informações de assinatura para usuários, você deve explicitamente e claramente Explique as associações de assinatura de conteúdo independente e assinado em conjunto.


Figura 8 assinada e grupos de Cosigned

As seguintes propriedades e pseudocódigo identificam pacotes que contêm vários grupos de conteúdo assinados:

O pseudocódigo a seguir cria uma lista dos grupos de conteúdo assinados contido em um pacote:

PackageDigitalSignatureManager dsm = 
   new PackageDigitalSignatureManager(package);
foreach (PackageDigitalSignature signature in dsm.Signatures)
{
    // Add to list(signature.SignaturePart, signature.Signer);
}
// Upon completion the list will contain one entry for each signature
// along with the X.509 certificate that identifies the signer.
// If the list contains more than one entry and different signers,
// the package contains multiple signed content groups.

Protegendo contra vários grupos de conteúdo assinados

Vários grupos de conteúdo assinados adicionar complexidade em um formato de arquivo de diretiva de assinatura, dado que eles aumentam a possibilidade de que alguém poderia adicionar conteúdo assinado de maneira fraudulenta para um documento com a intenção de criar uma associação enganosa de uma assinatura existente e conteúdo. Para proteger seu aplicativo contra esta ameaça, você pode exigir a assinatura do usuário para assinar a parte de relações de origem de assinatura do pacote. (A parte de relações de origem de assinatura é um arquivo especial do pacote com \package\services\digital-signatures\_rels\origin.psdor.rels nome.) Quando o conteúdo e a parte de relações de origem de assinatura são assinados, qualquer assinaturas adicionadas posteriormente modificará parte 
relationships de origem de assinatura, causando a assinatura original falhar e reportar o pacote como inválido.

Conteúdo externamente referenciado

Conteúdo externamente referenciado é outra confiança potencialmente indevida pelo cenário de associação. Itens dentro de um documento assinado podem conter referências a documentos externos, separados. A menos que esses documentos também são assinados, referências externas são consideradas informativas e não tem nenhuma associação formal com documento assinado.

Conteúdo acessado através de links externos e referências fora do pacote do documento pode alterar a qualquer momento. Idealmente, o conteúdo que está sendo assinado não deve conter qualquer vínculos ou referências a materiais fora do pacote do documento. Usuários devem ser capazes de identificar claramente e entender situações poderiam envolver a assinatura e Validando conteúdo que inclui links e referências para materiais externos. Figura 9 é um exemplo de mensagem indicando externamente referenciado conteúdo dentro de um documento.

Figura 9Mensagem de usuário de amostra para conteúdo externamente referenciada

Quando validar assinado conteúdo que inclui links para materiais externos, use as diretrizes a seguir:

  • Alertas os usuários a presença de referências e links para materiais externos. A notificação deve esclarecer que materiais externos são não assinados e não associados com qualquer assinatura ou assinatura confiança.
  • Forneça aos usuários os meios para distinguir claramente entre material de externo conteúdo e não assinado de estático assinado. Por exemplo, quando os usuários são Validando e exibir o conteúdo assinado somente links internos outros assinados conteúdo deve ser mostrado — ocultos links externos e referências para conteúdo externo.

Do Figura 10, documento partes r , s e t são assinados em podem ser validados com assinatura 1. No entanto, o documento parte s , contém um link para uma referência interna assinado para Part t e links para duas referências externas para x de conteúdo não assinados e y de conteúdo . Quando validar e descrevendo informações de assinatura para usuários, seu aplicativo deve explicitamente e claramente notificar o usuário que y e links do x consulte conteúdo não assinado que não está associado a assinatura 1 e não está relacionado a outros elementos de conteúdo validados (partes do r , s e t ).


Figura 10 externamente referenciados conteúdo

Identificação de itens que se referem a conteúdo externo é dependente do esquema do formato de arquivo OPC específico. O material que acompanha este artigo, você pode encontrar métodos, propriedades e pseudocódigo que você pode usar para identificar externamente referenciado conteúdo em formatos de arquivo do Microsoft Office para Word (.docx), o Excel (.xlsx) e o PowerPoint (.pptx).

Conteúdo dinâmico

Conteúdo dinâmico não assinado também é uma relação de confiança inadequada potencial por associação situação. Conteúdo dinâmico alterable não tem nenhum analogia em documentos em papel. Alterações ou alterações feitas em um documento de papel após é assinado legalmente invalidar a assinatura. Para retirá peso legal, modificações para um documento assinado papel devem ser revisadas, confirmadas e assinado novamente por signators original.

Do ponto de vista de confiança de assinatura, o conteúdo que pode ser dinamicamente adicionado, removido ou alterado é por sua natureza unsignable. Conteúdo dinâmico, como texto criado através da execução de funções e macros, pode violar o princípio fundamental de WYSIWYS. Conteúdo dinâmico normalmente é produzido de funções inserir texto para variáveis como “ data de hoje ” e “ última salva data, ” fórmulas como Soma, campos de referência ou outro conteúdo criado quando macros personalizadas são executadas.

Conteúdo dinâmico criado como resultado de executando macros personalizadas pode ser usado maliciosamente e apresenta uma vulnerabilidade de segurança. Operações executáveis adicionar complexidade torna difícil para os usuários a entender claramente conteúdo dinâmico. Para aplicar o princípio WYSIWYS, documentos que precisam ser assinado não devem incluir o conteúdo dinâmico e em vez disso, devem usar somente conteúdo estático.

Situações que envolvem a assinatura e Validando documentos que contêm conteúdo dinâmico devem ser abertamente, claramente e precisão representada aos usuários. Quando um documento que contém o conteúdo dinâmico de assinatura é inevitável, aderir às seguintes diretrizes:

  • Alertas os usuários a presença de conteúdo dinâmico. A notificação deve esclarecer o conteúdo dinâmico é não assinado e não relacionado qualquer assinatura e não pode ser associado com qualquer nível de confiança de assinatura.
  • Fornecer aos usuários o meio de identificar e distinguir claramente assinado conteúdo estático e não assinados dinâmicos conteúdo. Por exemplo, quando Validando e exibindo assinado conteúdo, conteúdo dinâmico deve ser ocultado; o signatário deve ver somente conteúdo estático exibido originalmente.

Figura 11 mostra uma mensagem avisa o usuário de conteúdo dinamicamente computado.

Figura 11 Sample User mensagem para conteúdo dinâmico

Do Figura 12, documento partes r e s são assinados em podem ser validados com assinatura 1. No entanto, o pacote do documento também contém uma parte do conteúdo dinâmico, parte z , que não pode ser assinado ou validado. Parte do z é independente e não associado, até mesmo implicitamente, assinatura 1.


Figura 12 do conteúdo dinâmico

Identificar os itens que contêm conteúdo dinâmico é dependente do esquema do formato de arquivo OPC específico. O material online que acompanha este artigo, você pode encontrar métodos, propriedades e pseudocódigo que você pode usar para identificar conteúdo dinâmico em formatos de arquivo do Microsoft Office para Word (.docx), o Excel (.xlsx) e o PowerPoint (.pptx).

Manutenção de transparência

Vou dizer novamente: Na criação de aplicativos que oferecem suporte a assinaturas digitais, você precisa garantir que os usuários recebem a mesma funcionalidade e transparência teria que com uma assinatura escrita à mão. Além sendo ciente das operações básicas de certificados de assinatura validação (X.509) e o conteúdo assinado (hashes criptográficos), você e seus designers UI precisam ser consultando para qualquer situações que podem não ser intuitivamente desmarque para o usuário.

Para resumir, poderiam surgir possíveis problemas de culpados seguintes:

  • Presença e identificação de conteúdo não assinado
  • Associações entre signatários da vários grupos de conteúdo
  • Presença e identificação de material externamente referenciado não assinado.
  • Presença e identificação de conteúdo dinâmico não assinado.

Se você não excluir esses tipos de conteúdo do seu aplicativo por design, você deve abertamente e apresentá-los com precisão ao usuário. Novamente, clara e precisa divulgação de informações de assinatura digital é uma necessidade do usuário fundamentais e um requisito para certificação de segurança ISO/IEC 15408 Common Criteria.

Na mudança para documentos eletrônicos, sensível à segurança grupos e indivíduos serão cada vez mais dependem certificações independentes, como o ISO/IEC 15408 Common Criteria. Para garantir que seu produto está posicionado bem-sucedida no mercado de hoje, levar tempo para escrever um aplicativo de software que atenda aos usuário e padrões de certificação de segurança.

Para obter mais informações sobre e links para vários padrões, consulte de material online que acompanha este artigo. Você também encontrará uma visão geral de como identificar dinâmico e externamente referenciadas conteúdo em documentos do Microsoft Office.

Jack Davis é gerente de programa da equipe “ compactação ” OPC do Windows. Davis é um colaborador anterior MSDN Magazine (“ OPC: Um novo padrão para Packaging seus dados, ” agosto de 2007) e blogs no site da equipe Microsoft Packaging em blogs.msdn.com/opc de . Ele pode ser contatado em jack.davis@microsoft.com de .

Conteúdo da Web para “ Application diretrizes em

Práticas de assinatura digital para Common Criteria Security ”

Os links a seguir fornecem informações que você precisará garantir que seus aplicativos Siga práticas recomendadas aceitas para usar assinaturas digitais.

Endereços da Web podem mudar, portanto talvez você não é possível conectar a sites mencionados aqui.

Identificando o conteúdo dinâmico e externamente referenciado em documentos do Office

Identificar elementos de conteúdo dinâmico ou conteúdo externamente referenciado é dependente do esquema do formato de arquivo OPC específico. Esta seção fornece uma visão geral de como identificar dinâmico e referenciado externamente o conteúdo em formatos de arquivo OOXML (Office Open XML) para (.docx) do Word, Excel (.xlsx) e o PowerPoint (.pptx). Esta visão geral não é completa – para obter detalhes adicionais, consulte ISO/IEC 29500 3 parte 3: Compatibilidade de marcação e extensibilidade do padrão de formato de arquivo OOXML.

Estrutura de documento do Office

Formatos de arquivo OOXML para Word, Excel e PowerPoint documentos empregam uma estrutura comum para armazenar conteúdo.

  • / [Content_Types] .xml arquivo
  • pasta de /_rels/
  • pasta de /docProps/
  • /documentType/ pasta, onde / documentType é:
    • /Word/ para documentos do Word (.docx)
    • /XL/ para documentos do Excel (.xlsx)
    • /ppt/ para documentos do PowerPoint (.pptx)

A parte de .xml [content-types] contém tipos MIME (Multipurpose Internet Mail Extension) para todas as partes contidas no pacote. Dois tipos de elemento podem ser definidos na marcação do tipo de conteúdo:

  • Elementos de extensão padrão definem associações padrão entre uma extensão da parte (nome do arquivo) e um tipo de conteúdo MIME especificado. Por exemplo:
<Default Extension="png" ContentType="image/png" />
  • Substituição PartName elementos definem associações para partes específicas e um tipo de conteúdo MIME especificado. Por exemplo:
<Override PartName="/word/footnotes.xml"
           ContentType="application/vnd.openxmlformats-
                       officedocument.wordprocessingml.footnotes+xml" />

Você pode usar o atributo ContentType para os elementos contidos na parte [content-types] .xml para identificar os tipos de itens armazenados no pacote (por exemplo, arquivos de projeto do Visual Basic usada em macros).

Para obter informações adicionais sobre a marcação de formato de arquivo OOXML, consulte ISO/IEC 29500 Part 1: Conceitos básicos e Markup Language Reference.

Documentos do Word

Campos

Documentos do Word podem incluir campos. Campos podem definir vários objetos, como tempo, data, propriedades de documento, links, referências a campos de formulário de conteúdo, externo e assim por diante. Campos usados dessa maneira podem fornecer conteúdo dinâmico. Há dois tipos de campos: simples e complexos.

Seguinte pseudocódigo (código de p) mostra como identificar elementos de campo simples.

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘<w:fldSimple *> * </w:fldSimple>’)
    then
       a simple-field exists

Campos complexos são descritos nas linhas de múltiplos que contém uma instrução inicial, uma descrição de campo e uma instrução final. O seguinte código de p mostra como identificar elementos de campo complexo.

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();   // Returns a Stream containing the part content
    if str contains (‘<w:fldChar fldCharType="begin" * />’)
    then
       a complex-field exists

Macros

As macros são outro mecanismo que pode fornecer conteúdo dinâmico. As macros são armazenadas em documentos do Word como arquivos do Visual Basic. Em documentos do Word usam macros, o documento / [Content_Types] .xml arquivo contém uma referência de tipo de conteúdo MIME para um projeto Visual Basic. O p-código a seguir mostra como identificar o uso de macros.

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘*vbaProject’)
    then
       a macro exists

Referências externas

Documentos do Word podem definir referências externas através de hiperlinks, subdocumentos, objetos OLE ou elementos de mala direta. O seguinte código de p descreve uma maneira de identificar se um documento usa referências externas.

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘href’ or ‘Hyperlink’ or ‘External’)
    then
       an external reference exists

Documentos do Excel

Campos calculados

Dentro de um documento, o conteúdo dinâmico é armazenado em campos calculados cujo valor é calculado de uma função. O seguinte código de p mostra como identificar o uso de células calculados em um documento.

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘<f *> * </f>’)
    then
       a calculated field exists

Date e Time

Informações de data e hora, como em cabeçalhos e rodapés, podem ser definidas para ser atualizado automaticamente (como quando impressão). Dinâmico informações de data e hora são definidas na folha descrição arquivo \xl\worksheets\sheet X .xml, onde X representa o número da folha. O arquivo de descrição de planilha pode conter o cabeçalho e rodapé elementos (headerFooter) que definem o conteúdo associado. Conteúdo valores & C, D & e & T servem como espaços reservados para valores de hora e data dinâmica. Dentro do XML marcação & C significa Current & D significa de data e & T significa para o tempo. &C sempre aparecerá antes & D e & T e do possível concatenar ambos criando cadeias de caracteres como & C & D & T ou & C & T & D.

Macros

Semelhante a documentos do Word, as macros são armazenadas em documentos do Excel como VisualBasic arquivos. Para documentos que usam as macros, o / [Content_Types] .xml arquivo irá conter uma referência de tipo de conteúdo MIME para um projeto Visual Basic. O código de p para detectar o uso de macros no Excel é semelhante ao Word. Você pode usar o código de p na seção anterior “ documentos do Word ” parte “ macros ” para detectar também o uso de macros no Excel.

Referências externas

Referências externas no Excel são implementadas da mesma forma como no Word. Consulte a seção “ documentos do Word ” anterior para obter mais informações sobre referências externas no Excel identificando parte “ referências externas ”.

Dados de bancos de dados e fontes de dados externas

Além disso, o Excel permite documentos obter dados dinamicamente de bancos de dados e outras fontes de dados externos. Fontes de dados externas são referenciadas por meio de uma definição de conexão com a fonte externa. Definições de conexão são especificadas em uma parte /xl/connections.xml armazenada no pacote. Aqui está alguns fonte de dados possíveis tipos de conexão:

  • Fonte baseado em ODBC
  • Fonte de DAO
  • Fonte de arquivo
  • Consulta à Web
  • OLE DB com origem
  • Fonte de texto
  • Conjunto de registros ADO
  • Provedor de conjunto de dados (DSP)

Para obter informações adicionais sobre fontes de dados, consulte ISO/IEC 29500 1 Fundamentals e Markup Language Reference, seção 12.3.4 Part conexões. O seguinte código de p mostra como identificar as conexões de dados externos em um documento.

Package pkg = Package.open(filepath);
PackagePart connPart= pkg.GetPart("/xl/connections.xml");
if connPart is not null   // file "/xl/connections.xml" exists
then
   an external data source exists

Dados voláteis

Dados voláteis são uma maneira adicional para o Excel para se conectar a uma fonte de dados externa. Dependências volátil operam por meio de um cache de dados suportado através do real - dados de tempo (RTD). Uma conexão RTD usa um objeto COM instalado na máquina local para fornecer os dados desejados para o documento. Para obter informações adicionais sobre dados voláteis, consulte ISO/IEC 29500 1 Fundamentals e Markup Language Reference, seção 18.15 dependências volátil. O p-código a seguir mostra como identificar RTD conexões em um documento.

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘<volTypes *>’)
    then
       volatile data exists

Documentos do PowerPoint

Date e Time

Slides dentro de uma apresentação do PowerPoint também podem conter elementos de hora e data dinâmica. Dinâmico informações de data e hora podem ser definidas em Descrição arquivo \ppt\slides\slide X .xml da cada slide, onde X é o número do slide. Slides que contenham conteúdo de hora e data dinâmica tem um elemento de data com seu atributo de tipo definido para o valor datetime. O p-código a seguir mostra como identificar a presença de data dinâmica e elementos de tempo em um documento do PowerPoint.

Package pkg = Package.open(filepath);
PackagePartCollection parts = pkg.GetParts();
foreach(PackagePart part in parts)
    Stream str = part.GetStream();  // Returns a Stream containing the part content
    if str contains (‘datetime’)
    then
       a date-time element exists

Macros

Semelhante a documentos do Word e Excel, as macros são armazenadas em documentos do PowerPoint como VisualBasic arquivos. Para documentos que usam as macros, o / [Content_Types] .xml arquivo irá conter uma referência de tipo de conteúdo MIME para um projeto Visual Basic. O código de p para detectar o uso de macros no PowerPoint é o mesmo para documentos do Word e Excel.

Referências externas

Referências externas no PowerPoint são implementadas como eles estão no Word e Excel.