O seu browser não é suportado

Tem de atualizar o seu browser para utilizar o site.

Atualize para a versão mais recente do Internet Explorer

SafeCtl.exe implementa IObjectSafety no controlo ActiveX

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática… erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 164119
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Sumário
SafeCtl.exe o exemplo demonstra como modificar um controlo ActiveX MFC baseadas em para indicar quem publicou o código e se um controlo foi adulterado. A amostra pode ajudar a identificar se o controlo é seguro para processamento de scripts e seguro para inicialização.
Mais Informação
o ficheiro seguinte está disponível para transferência a partir do centro de transferências da Microsoft:
Para mais informações sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
119591Como obter ficheiros de suporte da Microsoft a partir de serviços online
Microsoft pesquisados vírus neste ficheiro. A Microsoft utilizou o software de detecção de vírus mais actual, que estava disponível na data em que o ficheiro foi publicado. O ficheiro está armazenado em servidores com segurança melhorada, que ajudam a impedir quaisquer alterações não autorizadas ao ficheiro.

No Internet Explorer 3. 0 e versões posteriores, os utilizadores podem adicionar código sob a forma de controlos ActiveX para as respectivas páginas Web. A tag <object>é utilizada para especificar um controlo. Depois de criada uma instância do controlo, os respectivos atributos podem ser definidos através de interfaces de persistência do controlo. Por exemplo, para cada código de <param>Internet Explorer encontrar no contexto de uma tag de <object>ao analisar uma página HTML, Internet Explorer transmite um saco de propriedade através do controlo correspondenteIPersistPropertyBaginterface. Além disso, o comportamento de um controlo pode ser personalizado através da utilização de scripts incorporados na página que executar os métodos e modificar as propriedades expostas através da interface de automatização do controlo.

Código de Authenticode assinatura tecnologia permite aos utilizadores finais para identificar quem publicou o código e certifique-se de que ninguém adulterou esse código desde que foi assinado. Não garante que o código é seguro quando as respectivas propriedades são inicializadas com valores não fidedignos ou quando o respectivo modelo de automatização é condicionado por scripts não fidedignos. Para evitar essa garantia potencial perigos associados, as predefinições do Internet Explorer segurança, acessíveis através doSegurançaseparador do Internet ExplorerOpçõespropriedade folha, exigir que um controlo regista-se como implementar as categorias de componente adequado ou que o controlo implementa oIObjectSafetyinterface. O exemplo ilustra ambos.

Antes, define as propriedades de um controlo incorporado numa página HTML, o Internet Explorer consulta o controlo paraIObjectSafety. Se for suportado, Internet Explorer, em seguida, chama oSetInterfaceSafetyOptionsmétodo da nesta interface, passando o valor INTERFACESAFE_FOR_UNTRUSTED_DATA, bem como o identificador de interface (IID) de uma interface de persistência. Em páginas HTML hoje em dia, onde propriedades tendem a ser inicializado através da tag <param>, o IID é IID_IPersistPropertyBag. O IID é fornecido para situações em que poderá ser a proteger a segurança em algumas interfaces mas não noutros, neste exemplo não é importante. A aplicação de exemplo verifica para se certificar de que a interface é suportada. Se o controlo pode fazer sem danos ao sistema do cliente, independentemente dos dados com os quais poderá ser inicializado através dessa interface de persistência e essa interface de persistência é suportada, implementação do controlo doIObjectSafety::SetInterfaceSafetyOptionsmétodo de deve devolver S_OK. Caso contrário, deve ser devolvido E_FAIL.

Antes de permitir que quaisquer scripts incorporados que a página execute, do mesmo modo chama Internet Explorer através do controloIObjectSafety:: SetInterfaceSafetyOptionsmétodo mas em vez disso passar o valor INTERFACESAFE_FOR_UNTRUSTED_CALLER e o IID de alguns scripts de interface, que é normalmente IID_IDispatch. O controlo deve devolver S_OK ou E_FAIL adequadamente.

Se o controlo não suportaIObjectSafety, Este utiliza o Gestor de categorias de componentes para ver se o controlo implementa a categoria "seguro para inicialização", CATID_SafeForInitializing e a categoria "seguro para a criação de scripts", CATID_SafeForScripting, respectivamente.

Se o controlo não suportaIObjectSafetytem não registado próprio como implementar as categorias de componente apropriado e, se o nível de segurança do Internet Explorer está definido como alta, o valor predefinido, o Internet Explorer não irá inicializar as propriedades do controlo, nem executará quaisquer scripts incorporados na página. Neste cenário, os utilizadores finais apresentada uma caixa de diálogo que contém o seguinte texto:
Violação de segurança potencial evitada
Esta página contém conteúdo activo que não é seguro verifiably para apresentar. Para proteger o computador, este conteúdo não será apresentado.
Segue-se uma lista de orientações que são retirados artigo Johns de Paul, "assinatura e marcação controlos ActiveX:"
  • O controlo não manipular o sistema de ficheiros.
  • o controlo não manipular o registo (excepto para registar e anular o registo propriamente dito).
  • o controlo não overindex matrizes ou caso contrário manipular memória incorrectamente.
  • O controlo valida (e corrige) todas as entradas, incluindo a inicialização, os parâmetros de método e funções de conjunto de propriedades.
  • O controlo não utilizá indevidamente a quaisquer dados que é fornecido pelo utilizador ou que seja sobre esse utilizador.
  • O controlo foi submetido a uma variedade de cenários.
Para obter informações adicionais, visite o seguinte Web site da Microsoft:
Assinatura e marcação controlos ActiveX
http://msdn2.microsoft.com/en-us/library/ms974305.aspx
Se o autor de um controlo ter verificado que foram satisfeitos os critérios acima referidos, para além de quaisquer outros que se podem pensar, devem considerar a suportar ambosIObjectSafetye registar o seu controlo como as categorias de componente apropriado de execução. Para obter uma lista das vantagens e desvantagens de cada um destes métodos, consulte a secção correspondente no artigo Johns de Paul, "assinatura e marcação do ActiveX Controls."

A compilar

Construir a amostra requer o Microsoft Visual C++ 5. 0 ou Microsoft Visual C++ 6. 0. Depois de extrair os ficheiros do arquivo, carregar o projecto Safectl.mdp na Microsoft Developer Studio e criar o projecto. Como parte do processo de compilação, o controlo deve registar-se.

AvisoAntes de modificar a amostra utilizando os dois símbolos de pré-processador que estão listados mais adiante nesta secção, tem de anular o registo do controlo se tenha já sido construída ou registado no computador. Para efectuar este procedimento, execute regsvr32. exe com o/uparâmetro de para o controlo. Também pode adicionar uma entrada de ferramenta personalizada no Developer Studio que irá fazer para o projecto actual. Sobre oFerramentasmenu, clique emPersonalizare, em seguida, clique noFerramentasseparador criar uma entrada com as seguintes informações:
                Name: &Un-register ActiveX Control             Command: e:\Program Files\DevStudio\SharedIDE\BIN\REGSVR32.EXE           Arguments: /u /v "$(TargetPath)"   Initial Directory: $(TargetDir)				
Em seguida, pode utilizar a entrada "ferramentas/anular o registo controlo ActiveX" para anular o registo do controlo antes de adicionar ou remover definições de pré-processador específico de amostra.

Para criar o controlo para que regista-se como "seguro para a inicialização" e "seguro para a criação de scripts" componente categorias, siga estes passos:
  1. Sobre oProjectomenu, clique emDefinições.
  2. Clique oC++separador e, em seguida, defina a seguinte definição de pré-processador:
    L_USE_COMCAT
  3. Clique emOKpara fechar oDefiniçõescaixa de diálogo e, em seguida, recriar o controlo.
Para criar o controlo para que implementa em vez dissoIObjectSafetysiga os passos anteriores, mas substitua L_USE_COMCAT com L_IMPL_OBJECTSAFETY.

é igualmente válido para definir ambos os símbolos de pré-processador. Observe que estes símbolos são específicos para este projecto. Por predefinição, as definições de compilação do projecto definem ambos os símbolos de pré-processador.

Para executar

Depois do controlo da amostra foi criado e foi registado com êxito, inicie o Internet Explorer e, em seguida, abra a página de Safectl.htm, que está incluída no exemplo.

Se o controlo tiver sido configurado para registar-se como seguro ou implementarIObjectSafety, a legenda de controlos deve ler-se "Segurança para inicializar!" Quando clicar no controlo, deverá receber a seguinte mensagem:
I deve ser seguro para a criação de scripts!
Se o Internet Explorer está definido para a respectiva definição de segurança mais elevada, o script associado não é executado e recebe a seguinte mensagem:
Não seguros para inicialização!


NotaSe estiver a criar e testar configurações diferentes deste exemplo, certifique-se de que actualiza a página Web no browser. Se não a actualizar a página, poderá estar a utilizar a versão em cache do controlo em vez de compilação mais recente.
Referências
Para obter mais informações sobre a API de segurança, consulte a salvaguarda API referência na documentação online ActiveX SDK.

Para obter mais informações sobre o código de assinatura, consulte "assinatura com Microsoft Authenticode Technology" na documentação online ActiveX SDK.

Para mais informações sobre categorias de componentes, consulte o tópico "categorias de componentes" na documentação online ActiveX SDK.

Para mais informações sobre como implementar um COM (Component Object Model) interface no MFC, clique no número de artigo seguinte para visualizar o artigo na Microsoft Knowledge Base:
141277Como forçar uma interface numa aplicação MFC utilizando o Visual C++
Para informações aprofundadas sobre como desenvolver um controlo ActiveX e como implementá-lo na Web, visite o seguinte Web site da Microsoft:
Segurança SafeCtl de segurança
Nota Este é um artigo de “PUBLICAÇÃO RÁPIDA” criado directamente a partir da organização de suporte da Microsoft. As informações contidas neste artigo são fornecidas “tal como estão” em resposta a problemas recentes. Devido à urgência em disponibilizar este artigo, os materiais poderão incluir erros tipográficos e ser revistos em qualquer altura sem aviso prévio. Consulte os Termos de Utilização para outras considerações.

Aviso: Este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 164119 - Última Revisão: 01/12/2015 15:55:23 - Revisão: 2.0

  • Microsoft Internet Explorer 5.0
  • Microsoft Internet Explorer 6.0
  • Microsoft Visual C++ 5.0 Enterprise Edition
  • Microsoft Visual C++ 5.0 Professional Edition
  • kbnosurvey kbarchive kbdownload kbfile kbinfo kbsample kbmt KB164119 KbMtpt
Esta informação foi útil?