Saturday 27 July 2019

Manifesto permissões código base forex


Melhorando a segurança com atributos manifesto Os seguintes atributos de manifesto de arquivo JAR estão disponíveis para ajudar a garantir a segurança do seu applet ou do aplicativo Java Web Start. Apenas é necessário o atributo Permissões. O atributo Permissões é usado para garantir que o aplicativo solicite apenas o nível de permissões especificado na etiqueta do applet ou no arquivo JNLP usado para invocar o aplicativo. Use este atributo para ajudar a impedir que alguém re-implantação de um aplicativo que esteja assinado com seu certificado e executá-lo em um nível de privilégio diferente. Esse atributo é necessário no manifesto para o arquivo JAR principal. Consulte Atributo de permissões na Plataforma Java, Guia de implantação da edição padrão para obter mais informações. O atributo Codebase é usado para garantir que a base de código do arquivo JAR esteja restrita a domínios específicos. Use esse atributo para evitar que alguém re-implanta seu aplicativo em outro site para fins maliciosos. Consulte Atributo da Base de Dados na Plataforma Java, Guia de implantação da edição padrão para obter mais informações. O atributo Application-Name é usado para fornecer o título que é mostrado nas instruções de segurança para aplicativos assinados. Consulte Atributo de nome de aplicativo no Guia de implantação da plataforma Java, Standard Edition para obter mais informações. O atributo Application-Library-Allowable-Codebase é usado para identificar os locais onde seu aplicativo deve ser encontrado. Use este atributo para reduzir o número de locais mostrados no prompt de segurança quando o arquivo JAR estiver em uma localização diferente do arquivo JNLP ou a página HTML. Consulte Atributo da Base de Dados Permitida na Biblioteca da Aplicação-Biblioteca na Plataforma Java, Guia de implantação da edição padrão para obter mais informações. O atributo Callable-Allowable-Codebase é usado para identificar os domínios a partir dos quais o código JavaScript pode fazer chamadas no seu aplicativo. Use este atributo para evitar que o código JavaScript desconhecido acesse seu aplicativo. Consulte Atributo da Base de Código Permitido para Chamadas na Plataforma Java, Guia de Implantação da Standard Edition para obter mais informações. O atributo Entry-Point é usado para identificar as classes que podem ser usadas como pontos de entrada para o RIA. Use este atributo para evitar que o código não autorizado seja executado a partir de outros pontos de entrada disponíveis no arquivo JAR. Consulte Atributo de ponto de entrada na Plataforma Java, Guia de implantação da edição padrão para obter mais informações. O atributo Trusted-Only é usado para evitar que componentes não confiáveis ​​sejam carregados. Consulte Atributo somente de confiança na Plataforma Java, Guia de implantação da edição padrão para obter mais informações. O atributo Trusted-Library é usado para permitir chamadas entre código Java privilegiado e código Java sandbox sem solicitar permissão ao usuário. Consulte Atributo de Biblioteca Confiável na Plataforma Java, Guia de implantação da edição padrão para obter mais informações. Consulte Modificando um arquivo manifesto para obter informações sobre como adicionar esses atributos ao arquivo de manifesto. JAR Atestados de Manifesto de Arquivo para Segurança O manifesto de arquivo JAR contém informações sobre o conteúdo do arquivo JAR, incluindo informações de segurança e configuração. Use os atributos de manifesto descritos nesta seção para melhorar a segurança de executar RIAs de um navegador. Adicione os atributos ao manifesto antes do arquivo JAR estar assinado. Consulte Modificando um Arquivo Manifesto no Tutorial Java para obter informações sobre como adicionar atributos ao arquivo de manifesto JAR. Nota: estes atributos aplicam-se a applets assinados e aplicativos Java Web Start. Esses atributos são ignorados para aplicativos Java autônomos. Atributo de permissões O atributo Permissões é usado para verificar se o nível de permissões solicitado pelo RIA quando ele é executado corresponde ao nível de permissões que foi configurado quando o arquivo JAR foi criado. Use este atributo para ajudar a impedir que alguém re-implantação de um aplicativo que esteja assinado com seu certificado e executá-lo em um nível de privilégio diferente. Defina este atributo para um dos seguintes valores: sandbox - Indica que o RIA é executado no sandbox de segurança e não requer permissões adicionais. Todas as permissões - Indica que o RIA requer acesso aos recursos do sistema dos usuários. Para aplicativos e applets Java Web Start que usam o JNLP, o valor do atributo Permissões deve corresponder ao nível de permissão solicitado no arquivo JNLP ou combinar a permissão padrão se nenhum nível de permissão for solicitado. Caso contrário, é mostrado um erro eo RIA está bloqueado. Consulte Estrutura do Arquivo JNLP para obter informações sobre o elemento de segurança que é usado para solicitar o nível de permissões. Se o elemento não estiver presente, o nível de permissões é padrão para sandbox. Para applets que não usam JNLP, o valor do atributo Permissões deve corresponder ao nível de permissões solicitado na etiqueta do applet. Caso contrário, é mostrado um erro eo RIA está bloqueado. Se a etiqueta do applet não contiver um nível de permissões, as applets assinadas são executadas com o nível de permissões definido pelo atributo Permissões. Consulte Implantando com o Tag do Applet para obter informações sobre como configurar o nível de permissões na etiqueta do applet. Se o controle deslizante Nível de Segurança no Painel de Controle Java estiver definido como Muito Alto ou Alto. O atributo Permissões é requerido no arquivo JAR principal para o RIA. Se o atributo não estiver presente, o RIA está bloqueado. Para o nível de segurança Médio, se o atributo Permissões não estiver presente, o prompt de segurança contém um aviso amarelo sobre o atributo ausente e o nível de permissão solicitado pelo RIA é usado. Atributo Codebase O atributo Codebase é usado para restringir a base de código do arquivo JAR a domínios específicos. Utilize este atributo para evitar que alguém re-implanta seu aplicativo em outro site para fins maliciosos. Observação: se o atributo Codebase não especificar um servidor seguro, como HTTPS. Existe algum risco de que seu código possa ser reutilizado em esquemas de ataque de Man-in-the-Middle (MITM). Defina esse atributo para o nome de domínio ou o endereço IP onde o arquivo JAR para o aplicativo está localizado. O protocolo e o número da porta também podem ser incluídos. Para vários locais, separe os valores com um espaço. Um asterisco () pode ser usado como um curinga apenas no início do nome de domínio e não pode ser usado apenas com um domínio de nível superior, como. A tabela a seguir mostra valores de amostra e o que eles combinam. O valor do atributo Codebase deve corresponder à localização do arquivo JAR para o RIA. Caso contrário, é mostrado um erro eo RIA está bloqueado. Se o atributo não estiver presente, um aviso será gravado no Console de Java e a base de código especificada para a marca do applet ou o arquivo JNLP será usado. Atributo de nome de aplicativo O atributo de nome de aplicativo é usado em prompts de segurança para fornecer um título para o RIA assinado. O uso deste atributo é recomendado para ajudar os usuários a tomar a decisão de confiar e executar o RIA. O valor pode ser qualquer string válida, por exemplo: se o atributo Application-Name não estiver presente no manifesto do arquivo JAR, um aviso será gravado no Console Java e o valor para o atributo Main-Class será usado. Se nenhum dos atributos estiver presente no manifesto, nenhum título será exibido nas instruções de segurança. Os títulos não são mostrados para RIAs não assinados. Atributo Application-Library-Allowable-Codebase O atributo Application-Library-Allowable-Codebase identifica os locais onde o RIA assinado deverá ser encontrado. Este atributo é usado para determinar o que está listado no campo Localização para o prompt de segurança que é mostrado aos usuários quando o arquivo JAR para seu RIA está em uma localização diferente do arquivo JNLP ou página HTML que inicia seu RIA. Se os arquivos não estão nos locais identificados, o RIA está bloqueado. Defina esse atributo para os domínios onde o arquivo JAR, o arquivo JNLP e a página HTML estão localizados. Para especificar mais de um domínio, separe os domínios por um espaço, por exemplo: se o atributo Application-Library-Allowable-Codebase estiver presente e corresponder ao local a partir do qual o RIA for iniciado, um único host está listado no campo Local Para o prompt e a opção de ocultar prompts futuros é fornecida. Se este atributo estiver presente e os arquivos forem acessados ​​a partir de um local não incluído no atributo, o RIA será bloqueado. Se esse atributo não estiver presente, vários hosts que correspondem às localizações do arquivo JAR e do arquivo JNLP ou página HTML estão listados no campo Local para o prompt. Quando vários hosts são mostrados, o usuário não tem a opção de ocultar prompts futuros. O uso deste atributo é recomendado para que os arquivos para o RIA sejam acessados ​​apenas em locais conhecidos. Este atributo não é necessário se o arquivo JAR para o RIA estiver no mesmo local que o arquivo JNLP ou a página HTML que inicia o RIA. Consulte Atributo da Base de Dados para uma descrição dos valores que são permitidos. Atributo Callable-Allowable-Codebase O atributo Callable-Allowable-Codebase é usado para identificar os domínios a partir dos quais o código JavaScript pode fazer chamadas no RIA sem instruções de segurança. Defina este atributo para o domínio que hospeda o código JavaScript. Se uma chamada é feita a partir de código JavaScript que não está localizado em um domínio especificado pelo atributo Caller-Allowable-Codebase, a chamada é bloqueada. Para especificar mais de um domínio, separe os domínios por um espaço, por exemplo: se o atributo Callable-Allowable-Codebase não estiver presente, as chamadas do código JavaScript para o RIA mostram um aviso de segurança e os usuários podem optar por permitir a chamada Ou bloquear a chamada. Para RIAs não assinados, o código JavaScript que requer acesso ao RIA deve estar no mesmo local que o arquivo JAR principal para seu RIA, caso contrário, o usuário será solicitado a permitir o acesso. Os prompts de segurança são mostrados para cada instância classLoader do Applet. Consulte Atributo da Base de Dados para uma descrição dos valores que são permitidos. Se um asterisco autônomo () for especificado como o valor do atributo Callable-Allowable-Codebase, as chamadas do código JavaScript para o RIA mostram um aviso de segurança, e os usuários podem escolher a chamada ou bloquear a chamada. Uma opção para lembrar a escolha também é fornecida e, se selecionada, o aviso não é exibido quando o RIA é iniciado. Atributo de ponto de entrada O atributo de ponto de entrada é usado para identificar as classes que podem ser usadas como pontos de entrada para o seu RIA. Identificar os pontos de entrada ajuda a evitar que o código não autorizado seja executado quando um arquivo JAR possui mais de uma classe com um método main (), várias classes Applet ou várias classes JavaFX Application. Defina este atributo para o nome de classe totalmente qualificado que pode ser usado como ponto de entrada para o RIA. Para especificar mais de uma classe, separe as classes por um espaço, por exemplo: Entry-Point: apps. test. TestUI apps. test. TestCLI Se o manifesto JAR estiver assinado e o ponto de entrada da classe principal ou do applet especificado em O arquivo JNLP ou o descritor da aplicação difere da classe especificada para o atributo Entry-Point, então o RIA está bloqueado. Se o atributo Entry-Point não estiver presente, qualquer classe com um método main (), ou qualquer classe Applet ou JavaFX Application no arquivo JAR pode ser usada para iniciar seu RIA. O atributo Trusted-Only é usado para impedir que classes ou recursos não confiáveis ​​sejam carregados para um applet ou aplicativo. Defina o valor do atributo como verdadeiro. Por exemplo: Este atributo impede que uma aplicação ou applet privilegiada seja reutilizada com componentes não confiáveis. Todas as classes e recursos no aplicativo ou no applet devem ser assinados e solicitar todas as permissões. O atributo Trusted-Library é usado para aplicativos e applets projetados para permitir componentes não confiáveis. Não é exibida nenhuma caixa de diálogo de aviso e um aplicativo ou applet pode carregar arquivos JAR que contenham classes ou recursos não confiáveis. Defina o valor do atributo como verdadeiro. Por exemplo: Este atributo evita que os componentes de uma aplicação ou applet privilegiada sejam reutilizados com componentes não confiáveis. Todas as classes e recursos em um arquivo JAR contendo esse atributo de manifesto devem ser assinados e solicitar todas as permissões. Em um aplicativo ou applet de código misto, todas as classes e recursos privilegiados devem ser incluídos em arquivos JAR que contenham o atributo Trusted-Library. Esse atributo é usado para chamadas entre o código Java privilegiado Java code sandbox. Se você tiver o código JavaScript que chama o código Java, consulte Atributo do Callable-Allowable-Codebase. Todos os JAR de biblioteca confiáveis ​​são carregados em um carregador de classe dedicado separado que é exclusivo da instância do aplicativo ou do applet. Este carregador Trusted-Library é agora o pai do carregador da classe normal do Web Start ou do applet. Para compatibilidade com a ordem de busca original, ambos os carregadores cooperam para implementar um caminho de classe comum. Em consonância com as versões anteriores, os arquivos JAR usam downloads preguiçosos e são abertos conforme necessário para encontrar as classes e recursos solicitados. O código em um arquivo JAR que deve ser marcado com o atributo de manifesto Trusted-Library pode precisar ser modificado um pouco se ele usar chamadas que dependem de classe loader, como a versão de parâmetro único de Class. forName (). Class. getResource (). E Class. getResourceAsStream (). Algumas variantes de java. util. ResourceBundle. getBundle (). E quaisquer outros métodos que operam em relação a seus contadores imediatos que definem o carregador. As alterações só precisam ser feitas se a classe ou o recurso solicitado puderem ser encontrados em um arquivo JAR que não seja uma Biblioteca Trusted (e, portanto, é carregado pelo carregador da classe normal do Web Start ou do applet). O código em uma Trusted-Library pode procurar o carregador normal invocando Thread. currentThread (). GetContextClassLoader (). Note, no entanto, que existem circunstâncias incomuns em que getContextClassLoader () pode retornar nulo. Por exemplo, isso pode acontecer quando o coletor de lixo usa um fio do sistema JRE para invocar o método Object. finalize () de uma instância inacessível. Se você precisa converter classe para Class. getResource () ou Class. getResourceAsStream () para seus equivalentes ClassLoader, lembre-se de ajustar o parâmetro de seqüência de caracteres conforme descrito pela documentação para esses dois métodos. Se o nome do recurso original começou. Então era um nome absoluto e o líder simplesmente precisa ser removido. Caso contrário, determine se a instância da classe que foi o alvo da chamada getResource está em um pacote nomeado. Se for uma matriz, primeiro você deve determinar o tipo de componente subjacente da matriz. Invoque Class. getName () na instância do tipo de classe ou componente. Se o nome da classe contiver qualquer. Caracteres, está em um pacote nomeado que precisará ser precedido do nome do recurso original. Determine o nome do pacote removendo alguns caracteres depois, e inclusive, o fim. personagem. Em seguida, substitua qualquer restante. Personagens com personagens. Finalmente, adicione uma sequência e anexe a string do nome do recurso original. Essa nova string agora pode ser passada para a versão ClassLoader dos métodos getResource () ou getResourceAsStream (). Geralmente, deve-se ter cuidado para garantir que o código na biblioteca confiável seja escrito de forma cuidadosa e segura e, de outra forma, é compatível com a carga em uma instância de carregador de classes separada de quaisquer frascos restantes que fazem parte do aplicativo e sejam carregados por O carregador normal. Informações adicionais Consulte Mixing Privileged Code e Sandbox Code para obter informações sobre o uso de atributos de manifesto para gerenciar chamadas de código não confiável. Consulte Impedir que os RIAs sejam repurposados ​​para obter informações sobre o uso de atributos de manifesto para garantir que o nível de permissão correto ea base de código sejam usados. Para obter informações sobre como adicionar atributos ao arquivo de manifesto JAR, consulte Modificar um arquivo manifesto no Java Tutorial. JAR Atestados de Manifesto de Arquivo para Segurança O manifesto do arquivo JAR contém informações sobre o conteúdo do arquivo JAR, incluindo informações de segurança e configuração. Use os atributos de manifesto descritos nesta seção para melhorar a segurança de executar RIAs de um navegador. Adicione os atributos ao manifesto antes do arquivo JAR estar assinado. Consulte Modificando um Arquivo Manifesto no Tutorial Java para obter informações sobre como adicionar atributos ao arquivo de manifesto JAR. Nota: estes atributos aplicam-se a applets assinados e aplicativos Java Web Start. Esses atributos são ignorados para aplicativos Java autônomos. Atributo de permissões O atributo Permissões é usado para verificar se o nível de permissões solicitado pelo RIA quando ele é executado corresponde ao nível de permissões que foi configurado quando o arquivo JAR foi criado. Use este atributo para ajudar a impedir que alguém re-implantação de um aplicativo que esteja assinado com seu certificado e executá-lo em um nível de privilégio diferente. Defina este atributo para um dos seguintes valores: sandbox - Indica que o RIA é executado no sandbox de segurança e não requer permissões adicionais. Todas as permissões - Indica que o RIA requer acesso aos recursos do sistema dos usuários. Para aplicativos e applets Java Web Start que usam o JNLP, o valor do atributo Permissões deve corresponder ao nível de permissão solicitado no arquivo JNLP ou combinar a permissão padrão se nenhum nível de permissão for solicitado. Caso contrário, um erro é mostrado e o RIA está bloqueado. Consulte Estrutura do Arquivo JNLP para obter informações sobre o elemento de segurança que é usado para solicitar o nível de permissões. Se o elemento não estiver presente, o nível de permissões é padrão para sandbox. Para applets que não usam JNLP, o valor do atributo Permissões deve corresponder ao nível de permissões solicitado na etiqueta do applet. Caso contrário, um erro é mostrado e o RIA está bloqueado. Se a etiqueta do applet não contiver um nível de permissões, as applets assinadas são executadas com o nível de permissões definido pelo atributo Permissões. Consulte Implantando com o Tag do Applet para obter informações sobre como configurar o nível de permissões na etiqueta do applet. Se o controle deslizante Nível de Segurança no Painel de Controle Java estiver definido como Muito Alto ou Alto. O atributo Permissões é requerido no arquivo JAR principal para o RIA. Se o atributo não estiver presente, o RIA está bloqueado. Para o nível de segurança Médio, se o atributo Permissões não estiver presente, o prompt de segurança contém um aviso amarelo sobre o atributo ausente e o nível de permissão solicitado pelo RIA é usado. Atributo Codebase O atributo Codebase é usado para restringir a base de código do arquivo JAR a domínios específicos. Use esse atributo para evitar que alguém re-implanta seu aplicativo em outro site para fins maliciosos. Observação: se o atributo Codebase não especificar um servidor seguro, como HTTPS. Existe algum risco de que seu código possa ser reutilizado em esquemas de ataque de Man-in-the-Middle (MITM). Defina esse atributo para o nome de domínio ou o endereço IP onde o arquivo JAR para o aplicativo está localizado. O protocolo e o número da porta também podem ser incluídos. Para locais múltiplos, separe os valores com um espaço. Um asterisco () pode ser usado como um curinga apenas no início do nome de domínio e não pode ser usado apenas com um domínio de nível superior, como. A tabela a seguir mostra valores de amostra e o que eles combinam. O valor do atributo Codebase deve corresponder à localização do arquivo JAR para o RIA. Caso contrário, um erro é mostrado e o RIA está bloqueado. Se o atributo não estiver presente, um aviso será gravado no Console de Java e a base de código especificada para a marca do applet ou o arquivo JNLP será usado. Atributo de nome de aplicativo O atributo de nome de aplicativo é usado em prompts de segurança para fornecer um título para o RIA assinado. O uso deste atributo é recomendado para ajudar os usuários a tomar a decisão de confiar e executar o RIA. O valor pode ser qualquer string válida, por exemplo: se o atributo Application-Name não estiver presente no manifesto do arquivo JAR, um aviso será gravado no Console Java e o valor para o atributo Main-Class será usado. Se nenhum dos atributos estiver presente no manifesto, nenhum título será exibido nas instruções de segurança. Os títulos não são mostrados para RIAs não assinados. Atributo Application-Library-Allowable-Codebase O atributo Application-Library-Allowable-Codebase identifica os locais onde o RIA assinado deverá ser encontrado. Este atributo é usado para determinar o que está listado no campo Local para o prompt de segurança que é mostrado aos usuários quando o arquivo JAR para o seu RIA está em uma localização diferente do arquivo JNLP ou página HTML que inicia seu RIA. Se os arquivos não estão nos locais identificados, o RIA está bloqueado. Defina esse atributo para os domínios onde o arquivo JAR, o arquivo JNLP e a página HTML estão localizados. Para especificar mais de um domínio, separe os domínios por um espaço, por exemplo: se o atributo Application-Library-Allowable-Codebase estiver presente e corresponder ao local a partir do qual o RIA for iniciado, um único host está listado no campo Local Para o prompt e a opção de ocultar prompts futuros é fornecida. Se este atributo estiver presente e os arquivos forem acessados ​​a partir de um local não incluído no atributo, o RIA será bloqueado. Se esse atributo não estiver presente, vários hosts que correspondem às localizações do arquivo JAR e do arquivo JNLP ou página HTML estão listados no campo Localização para o prompt. Quando vários hosts são mostrados, o usuário não tem a opção de ocultar prompts futuros. O uso deste atributo é recomendado para que os arquivos para o RIA sejam acessados ​​apenas em locais conhecidos. Este atributo não é necessário se o arquivo JAR para o RIA estiver no mesmo local que o arquivo JNLP ou a página HTML que inicia o RIA. Consulte Atributo da Base de Dados para uma descrição dos valores que são permitidos. Atributo Callable-Allowable-Codebase O atributo Callable-Allowable-Codebase é usado para identificar os domínios a partir dos quais o código JavaScript pode fazer chamadas para o RIA sem instruções de segurança. Defina este atributo para o domínio que hospeda o código JavaScript. Se uma chamada é feita a partir de código JavaScript que não está localizado em um domínio especificado pelo atributo Caller-Allowable-Codebase, a chamada é bloqueada. Para especificar mais de um domínio, separe os domínios por um espaço, por exemplo: se o atributo Callable-Allowable-Codebase não estiver presente, as chamadas do código JavaScript para o RIA mostram um aviso de segurança e os usuários podem optar por permitir a chamada Ou bloquear a chamada. Para RIAs não assinados, o código JavaScript que requer acesso ao RIA deve estar no mesmo local que o arquivo JAR principal para o RIA, caso contrário, o usuário será solicitado a permitir o acesso. Os prompts de segurança são mostrados para cada instância classLoader do Applet. Consulte Atributo da Base de Dados para uma descrição dos valores que são permitidos. Se um asterisco autônomo () for especificado como o valor do atributo Callable-Allowable-Codebase, as chamadas do código JavaScript para o RIA mostram um aviso de segurança, e os usuários podem escolher a chamada ou bloquear a chamada. Uma opção para lembrar a escolha também é fornecida e, se selecionada, o aviso não é exibido quando o RIA é iniciado. Atributo de ponto de entrada O atributo de ponto de entrada é usado para identificar as classes que podem ser usadas como pontos de entrada para o seu RIA. Identificar os pontos de entrada ajuda a evitar que o código não autorizado seja executado quando um arquivo JAR possui mais de uma classe com um método main (), várias classes Applet ou várias classes JavaFX Application. Defina este atributo para o nome da classe totalmente qualificado que pode ser usado como ponto de entrada para o RIA. Para especificar mais de uma classe, separe as classes por um espaço, por exemplo: Entry-Point: apps. test. TestUI apps. test. TestCLI Se o manifesto JAR estiver assinado e o ponto de entrada da classe principal ou do applet especificado em O arquivo JNLP ou o descritor da aplicação difere da classe especificada para o atributo Entry-Point, então o RIA está bloqueado. Se o atributo Entry-Point não estiver presente, qualquer classe com um método main (), ou qualquer classe Applet ou JavaFX Application no arquivo JAR pode ser usada para iniciar seu RIA. O atributo Trusted-Only é usado para impedir que classes ou recursos não confiáveis ​​sejam carregados para um applet ou aplicativo. Defina o valor do atributo como verdadeiro. Por exemplo: Este atributo impede que uma aplicação ou applet privilegiada seja reutilizada com componentes não confiáveis. Todas as classes e recursos no aplicativo ou no applet devem ser assinados e solicitar todas as permissões. O atributo Trusted-Library é usado para aplicativos e applets projetados para permitir componentes não confiáveis. Não é exibida nenhuma caixa de diálogo de aviso e um aplicativo ou applet pode carregar arquivos JAR que contenham classes ou recursos não confiáveis. Defina o valor do atributo como verdadeiro. Por exemplo: Este atributo evita que os componentes de uma aplicação ou applet privilegiada sejam reutilizados com componentes não confiáveis. Todas as classes e recursos em um arquivo JAR contendo esse atributo de manifesto devem ser assinados e solicitar todas as permissões. Em um aplicativo ou applet de código misto, todas as classes e recursos privilegiados devem ser incluídos em arquivos JAR que contenham o atributo Trusted-Library. Este atributo é usado para chamadas entre o código Java privilegiado Java code sandbox. Se você tiver o código JavaScript que chama o código Java, consulte Atributo do Callable-Allowable-Codebase. Todos os JAR de biblioteca confiáveis ​​são carregados em um carregador de classe dedicado separado que é exclusivo da instância do aplicativo ou do applet. Este carregador Trusted-Library é agora o pai do carregador da classe normal do Web Start ou do applet. Para compatibilidade com a ordem de busca original, ambos os carregadores cooperam para implementar um caminho de classe comum. Em consonância com as versões anteriores, os arquivos JAR usam downloads preguiçosos e são abertos conforme necessário para encontrar as classes e recursos solicitados. O código em um arquivo JAR que deve ser marcado com o atributo de manifesto Trusted-Library pode precisar ser modificado um pouco se ele usar chamadas que dependem de classe loader, como a versão de parâmetro único de Class. forName (). Class. getResource (). E Class. getResourceAsStream (). Algumas variantes de java. util. ResourceBundle. getBundle (). E quaisquer outros métodos que operam em relação aos contadores imediatos que definem o carregador. As alterações só precisam ser feitas se a classe ou o recurso solicitado puderem ser encontrados em um arquivo JAR que não seja uma Biblioteca Trusted (e, portanto, é carregado pelo carregador da classe normal do Web Start ou do applet). O código em uma Trusted-Library pode procurar o carregador normal invocando Thread. currentThread (). GetContextClassLoader (). Note, no entanto, que existem circunstâncias incomuns em que getContextClassLoader () pode retornar nulo. Por exemplo, isso pode acontecer quando o coletor de lixo usa um fio do sistema JRE para invocar o método Object. finalize () de uma instância inacessível. Se você precisa converter a classe para Class. getResource () ou Class. getResourceAsStream () para seus equivalentes ClassLoader, lembre-se de ajustar o parâmetro string conforme descrito na documentação desses dois métodos. Se o nome do recurso original começou. Então era um nome absoluto e o líder simplesmente precisa ser removido. Caso contrário, determine se a instância da classe que foi o alvo da chamada getResource está em um pacote nomeado. Se for uma matriz, primeiro você deve determinar o tipo de componente subjacente da matriz. Invoque Class. getName () na instância do tipo classe ou componente. Se o nome da classe contiver qualquer. Caracteres, está em um pacote nomeado que precisará ser pré-passado ao nome do recurso original. Determine o nome do pacote removendo alguns caracteres depois, e inclusive, o fim. personagem. Em seguida, substitua qualquer restante. Personagens com personagens. Finalmente, adicione uma sequência e anexe a string do nome do recurso original. Essa nova string agora pode ser passada para a versão ClassLoader dos métodos getResource () ou getResourceAsStream (). Geralmente, deve-se ter cuidado para garantir que o código na biblioteca confiável seja escrito de forma cuidadosa e segura e, de outra forma, é compatível com a carga em uma instância de carregador de classe separada de quaisquer frascos restantes que fazem parte do aplicativo e sejam carregados por O carregador normal. Informações adicionais Consulte Mixing Privileged Code e Sandbox Code para obter informações sobre o uso de atributos de manifesto para gerenciar chamadas de código não confiável. Consulte Prevenção de RIAs de serem repurposados ​​para obter informações sobre o uso de atributos de manifesto para garantir que o nível de permissão correto ea base de código sejam usados. Para obter informações sobre como adicionar atributos ao arquivo de manifesto JAR, consulte Modificar um arquivo manifesto no Java Tutorial. JAR Atestados de Manifesto de Arquivo para Segurança O manifesto do arquivo JAR contém informações sobre o conteúdo do arquivo JAR, incluindo informações de segurança e configuração. Use os atributos de manifesto descritos nesta seção para melhorar a segurança de executar RIAs de um navegador. Adicione os atributos ao manifesto antes que o arquivo JAR seja assinado. Consulte Modificando um Arquivo Manifesto no Tutorial Java para obter informações sobre como adicionar atributos ao arquivo de manifesto JAR. Nota: Estes atributos aplicam-se a applets assinadas e aplicativos Java Web Start. Esses atributos são ignorados para aplicativos Java autônomos. Atributo de permissões O atributo Permissões é usado para verificar se o nível de permissões solicitado pelo RIA quando ele é executado corresponde ao nível de permissões que foi configurado quando o arquivo JAR foi criado. Esse atributo é necessário no manifesto do arquivo JAR principal para o RIA, os arquivos JAR secundários e as extensões não são necessárias para ter o atributo Permissions. Se o atributo não estiver presente no arquivo JAR principal, o RIA será bloqueado. Use o atributo Permissões para ajudar a impedir que alguém re-implantação de um aplicativo que esteja assinado com seu certificado e executá-lo em um nível de privilégio diferente. Defina este atributo para um dos seguintes valores: sandbox - Indica que o RIA é executado no sandbox de segurança e não requer permissões adicionais. Todas as permissões - Indica que o RIA requer acesso aos recursos do sistema dos usuários. Para aplicativos e applets Java Web Start que usam JNLP, o valor do atributo Permissões deve corresponder ao nível de permissão solicitado no arquivo JNLP ou combinar a permissão padrão se nenhum nível de permissão for solicitado. Caso contrário, é mostrado um erro eo RIA está bloqueado. Consulte Estrutura do Arquivo JNLP para obter informações sobre o elemento de segurança que é usado para solicitar o nível de permissões. Se o elemento não estiver presente, o nível de permissões é padrão para o sandbox. Para applets que não usam JNLP, o valor do atributo Permissões deve corresponder ao nível de permissões solicitado na etiqueta do applet. Caso contrário, é mostrado um erro eo RIA está bloqueado. Se a etiqueta do applet não contiver um nível de permissões, as applets assinadas são executadas com o nível de permissões definido pelo atributo Permissões. Consulte Implantando com o Tag do Applet para obter informações sobre como configurar o nível de permissões na etiqueta do applet. Atributo Codebase O atributo Codebase é usado para restringir a base de código do arquivo JAR a domínios específicos. Use esse atributo para evitar que alguém re-implanta seu aplicativo em outro site para fins maliciosos. Observação: se o atributo Codebase não especificar um servidor seguro, como HTTPS. Existe algum risco de que o seu código possa ser reutilizado em esquemas de ataque de Man-in-the-Middle (MITM). Set this attribute to either the domain name or IP address where the JAR file for the application is located. A port number can also be included. For multiple locations, separate the values with a space. An asterisk () can be used as a wildcard only at the beginning of the domain name. The following table shows sample values and what they match. The value of the Codebase attribute must match the location of the JAR file for the RIA. Otherwise, an error is shown and the RIA is blocked. If the attribute is not present, a warning is written to the Java Console and the code base specified for the applet tag or JNLP file is used. Application-Name Attribute The Application-Name attribute is used in security prompts to provide a title for your signed RIA. Use of this attribute is recommended to help users make the decision to trust and run the RIA. The value can be any valid string, for example: If the Application-Name attribute is not present in the JAR file manifest, a warning is written to the Java Console and the value for the Main-Class attribute is used. If neither attribute is present in the manifest, no title is shown in the security prompts. Titles are not shown for unsigned RIAs. Application-Library-Allowable-Codebase Attribute The Application-Library-Allowable-Codebase attribute identifies the locations where your signed RIA is expected to be found. This attribute is used to determine what is listed in the Location field for the security prompt that is shown to users when the JAR file for your RIA is in a different location than the JNLP file or HTML page that starts your RIA. If the files are not in the locations identified, the RIA is blocked. Set this attribute to the domains where the JAR file, JNLP file, and HTML page are located. To specify more than one domain, separate the domains by a space, for example: If the Application-Library-Allowable-Codebase attribute is present and matches the location from which the RIA is started, then a single host is listed in the Location field for the prompt and the option to hide future prompts is provided. If this attribute is present and the files are accessed from a location not included for the attribute, then the RIA is blocked. If this attribute is not present, then multiple hosts that correspond to the locations of the JAR file and the JNLP file or HTML page are listed in the Location field for the prompt. When multiple hosts are shown, the user is not given the option to hide future prompts. Use of this attribute is recommended so the files for the RIA are accessed only from known locations. This attribute is not needed if the JAR file for the RIA is in the same location as the JNLP file or HTML page that starts the RIA. See Codebase Attribute for a description of the values that are allowed. Caller-Allowable-Codebase Attribute The Caller-Allowable-Codebase attribute is used to identify the domains from which JavaScript code can make calls to your RIA without security prompts. Set this attribute to the domain that hosts the JavaScript code. If a call is made from JavaScript code that is not located in a domain specified by the Caller-Allowable-Codebase attribute, the call is blocked. To specify more than one domain, separate the domains by a space, for example: If the Caller-Allowable-Codebase attribute is not present, calls from JavaScript code to your RIA are blocked when the security level is set to High. which is the default, or Very High. When the security level is set to Medium. which is not recommended, a security warning is shown and users then have the choice to allow the call or block the call. For unsigned RIAs, JavaScript code that requires access to the RIA must be in the same location as the main JAR file for your RIA, otherwise, the user is prompted to allow access. Security prompts are shown for each Applet classLoader instance. See Codebase Attribute for a description of the values that are allowed. The Trusted-Only attribute is used to prevent untrusted classes or resources from being loaded for an applet or application. Set the value of the attribute to true. for example: This attribute prevents a privileged application or applet from being repurposed with untrusted components. All classes and resources in the application or applet must be signed and request all permissions. The Trusted-Library attribute is used for applications and applets that are designed to allow untrusted components. No warning dialog is shown and an application or applet can load JAR files that contain untrusted classes or resources. Set the value of the attribute to true. for example: This attribute prevents components in a privileged application or applet from being repurposed with untrusted components. All classes and resources in a JAR file containing this manifest attribute must be signed and request all permissions. In a mixed code application or applet, all privileged classes and resources must be included in JAR files that contain the Trusted-Library attribute. This attribute is used for calls between privileged Java code sandbox Java code. If you have JavaScript code that calls Java code, see Caller-Allowable-Codebase Attribute. All trusted library JARs are loaded into a separate dedicated class loader that is unique to the application or applet instance. This Trusted-Library loader is now the parent of the normal Web Start or applet class loader. For backwards compatibility with the original search order, both loaders cooperate to implement a common class path. Consistent with prior releases, JAR files use lazy download and are opened as needed to find requested classes and resources. Code in a JAR file that is to be marked with the Trusted-Library manifest attribute may need to be modified slightly if it uses calls that are class loader dependent, such as the single parameter version of Class. forName(). Class. getResource(). and Class. getResourceAsStream(). some variants of java. util. ResourceBundle. getBundle(). and any other methods that operate relative to their immediate callers defining loader. Changes only need to be made if the requested class or resource might be found in a JAR file that is not a Trusted-Library (and is therefore loaded by the normal Web Start or applet class loader). Code in a Trusted-Library can look up the normal loader by invoking Thread. currentThread().getContextClassLoader(). Note, however, that there are uncommon circumstances in which getContextClassLoader() may return null. For example, this may happen when the garbage collector uses a JRE system thread to invoke the Object. finalize() method of an unreachable instance. If you need to convert class to Class. getResource() or Class. getResourceAsStream() to their ClassLoader equivalents, remember to adjust the string parameter as described by the documentation for those two methods. If the original resource name began with . then it was an absolute name and the leading simply needs to be removed. Otherwise, determine if the class instance which was the target of the getResource call is in a named package. If it is an array you should first determine the underlying component type of the array. Invoke Class. getName() on the class or component type instance. If the class name contains any . characters, it is in a named package that will need to be prepended to the original resource name. Determine the package name by removing any characters after, and including, the trailing . character. Next, replace any remaining . characters with characters. Finally, add a trailing and append the original resource name string. This new string can now be passed to the ClassLoader version of the getResource() or getResourceAsStream() methods. Generally, care must be taken to ensure that the code in the trusted library is written in a careful and secure manner and is otherwise compatible with being loaded in a separate class loader instance from any remaining jars that are part of the application and are loaded by the normal loader. Additional Information See Mixing Privileged Code and Sandbox Code for information on using manifest attributes to manage calls from untrusted code. See Preventing RIAs from Being Repurposed for information on using manifest attributes to ensure that the correct permissions level and code base are used. For information on adding attributes to the JAR manifest file, see Modifying a Manifest File in the Java Tutorial.

No comments:

Post a Comment