mozilla
Os seus resultados da pesquisa

    Usando privilégios expandidos em navegadores Mozilla

    Navegadores Mozilla dispõem de funções para segurança em Javascript similares às usadas para segurança em Java e Javascript no Netscape Communicator 4.x.

    Em casos mais simples, o código pede permissão para habilitar o privilégio que possibilita o acesso ao alvo através de scripts. Por exemplo:

    netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
    
    //ou: 
    
    netscape.security.PrivilegeManager.enablePrivilege("UniversalPreferencesRead UniversalFileRead");
    

    Quando este método é invocado, se a assinatura for válida (caso seja um script assinado) ou codebase principal esteja habilitado, os privilégios expandidos são concedidos. Caso o acesso não seja por meio de uma destas formas, por exemplo, utilizando um arquivo local através da url file://, será exibida uma caixa de diálogo perguntando se o usuário permite que o script use estes privilégios e também se deseja memorizar esta decisão. Note que no segundo exemplo o script solicita dois privilégios, porém exibe apenas uma caixa de diálogo descrevendo-os.

    Os privilégios são concedidos apenas no escopo da função que os solicitou. Este escopo inclui as funções chamadas por esta função. Quando a função termina, os privilégios não são mais aplicáveis.

    Exemplo

    A função b solicita privilégios expandidos, e somente comandos e funções chamados no escopo da mesma após a solicitação têm privilégios concedidos. É uma boa prática habilitar privilégios somente quando necessário, e após o uso desabilitá-los. Isso ajuda a proteger o computador do usuário de seções perigosas no código.

    function mostraPrivilegios(i) {
      try{
        if (history[0] != "") {
    	  document.write(i + ": habilitado<br>");
    	}
      } catch (e) {
        document.write(i + ": desabilitado<br>");
      }
    }
    
    function a() {
      mostraPrivilegios(5);
    }
    
    function b() {
      mostraPrivilegios(3);
      netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
      mostraPrivilegios(4);
      a();
      mostraPrivilegios(6);
    }
    
    function c() {
      mostraPrivilegios(2);
      b();
      mostraPrivilegios(7);
    }
    
    mostraPrivilegios(1);
    c();
    mostraPrivilegios(8);
    

    Este exemplo exibe o seguinte resultado:

    1: desabilitado
    2: desabilitado
    3: desabilitado
    4: habilitado
    5: habilitado
    6: habilitado
    7: desabilitado
    8: desabilitado
    

    Privilégios

    UniversalBrowserRead
    Leitura de dados sensíveis do browser. Isto permite que o certificado passe a verificação da mesma origem ao ler de qualquer documento.
    UniversalBrowserWrite
    Modificação de dados sensíveis do browser. Isto permite que o certificado passe a verificação da mesma origem ao escrever em qualquer documento.
    UniversalXPConnect
    Acesso irrestrito às APIs do browser usando XPConnect.
    UniversalPreferencesRead
    Ler preferências usando o método navigator.preference.
    UniversalPreferencesWrite
    Ajustar preferências usando o método navigator.preference.
    CapabilityPreferencesAccess
    Ler e ajustar as preferências que definem políticas de segurança, incluindo que privilégios foram concedidos e negados aos scripts. Você também necessita de UniversalPreferencesRead e UniversalPreferencesWrite.
    UniversalFileRead
    Uso do método window.open com URLs file:// e permite que o browser faça upload de arquivos usando <input type="file">.

    Nota: Este artigo, bem como seu exemplo, foi baseado no artigo Signed Scripts in Mozilla, porém, conta com atualizações para conformidade no uso de navegadores atuais.

    Informações Sobre o Documento Original

    Categorias

    Interwiki Language Links

    Etiquetas do documento e colaboradores

    Contributors to this page: Verruckt, Leandro Mercês Xavier
    Última atualização por: Leandro Mercês Xavier,