Por que Java me diz que meu applet contém código assinado e não assinado?
-
25-09-2019 - |
Pergunta
Meu Applet Java assinado está funcionando bem até o Java Atualize 19. Agora, alguns, mas nem todos os nossos usuários no Java Atualize 19 relatam uma mensagem de segurança Java, afirmando que nosso applet contém código assinado e não assinado.
O processo para criar nosso applet é o seguinte:
- Limpe e construa o projeto de applet no netbeans IDE.
- Abra o arquivo JAR do Applet no Winrar e adicione os arquivos do Driver .Class .Class do MySQL JDBC ao arquivo JAR.
- Assine o arquivo jar do applet.
Alguém pode me dizer como determinar qual código é assinado e qual código não está assinado em nosso applet? Existe uma maneira melhor de incluir o arquivo JAR de driver MySQL JDBC em nosso applet, além de copiar o conteúdo do arquivo JAR em nosso arquivo JAR de applet?
Obrigado
Solução
Algumas coisas para tentar:
- Vá para o painel de controle do plug -in Java ($ java_home/bin/controlPanel).
- Vou ao
Advanced
aba. - Expandir
Debug
- Verificar
Enable tracing
,Enable logging
, eShow applet lifecycle exceptions
- Expandir
Java console
- Verificar
Show console
- Clique
OK
(ouClose
, dependendo do seu sistema operacional)
Quando o seu applet carregar, o console Java será aberto. Clique nele e pressione imediatamente '5'. Ele registrará os frascos e as aulas sendo buscada para executar seu applet. Em algum lugar disso, deve haver uma mensagem indicando quais frascos ou classes são considerados "não assinados". Se você sentir falta da primeira vez, basta recarregar a janela para experimentá -la novamente.
Outras dicas
Editar: devido a um bug na atualização Java 7, você não deve adicionar biblioteca confiável ao seu arquivo de manifesto. Basta adicionar o novo atributo chamador-código-código. Veja esta pergunta para mais informações: Manifesto de Applet Java-Permitir toda a Codebase de Classificador-Arelable
O Java 7 Atualização 21 foi lançado em 16 de abril de 2013 e fez com que nosso applet comece a mostrar esse diálogo de aviso.
De acordo com as notas de liberação: a partir do JDK 7U21, o código JavaScript que chama o código dentro de um applet privilegiado é tratado como código misto e diálogos de aviso forem aumentados se os arquivos JAR assinados não forem marcados com o atributo confiável da biblioteca.
Para corrigir este arquivo manifesto.mf e adicionar uma linha como esta:
Trusted-Library: true
Você deve ter muito cuidado antes de fazer isso. Se o seu applet assinado puder ser chamado do JavaScript, um usuário malicioso poderá fazer coisas prejudiciais nos computadores de seus usuários.
Uma maneira rápida de proteger seu applet é impedir que ele seja executado em outros sites. Faça isso colocando código no init()
método que analisa getCodeBase().getHost()
e joga uma exceção se não corresponder ao seu site.
O Java 7 Atualização 25 apresenta outra maneira de limitar os sites onde seu applet pode ser executado. Você pode definir o atributo CodeBase em seu arquivo de manifesto assim:
Codebase: test.example.com www.example.com
Java 7 Atualização 45 (RELATED 16 de outubro de 2013) apresenta mais alterações no sistema LiveConnect (ponte JavaScript para aplicativo) que podem causar outro prompt. Este artigo fala sobre as alterações 7U45: https://blogs.oracle.com/java-platform-group/entry/liveconnect_changes_in_7u45
Basicamente, você também deseja adicionar o seguinte ao seu arquivo manifesto para evitar os prompts:
Caller-Allowable-Codebase: test.example.com www.example.com
Se você está vendendo um produto que inclui um applet e não sabe em quais domínios ele pode ser implantado, você pode preencher * aqui.
Mixar Código Confiável e Não Confiado é uma vulnerabilidade que foi fixada no 6U19 (a versão atual da CPU/SSR no momento da redação). Veja os documentos. Bloquear a mistura ou usar um depurador deve mostrar onde está o problema.