Pessoal,
Estou tentando trabalhar com segurança,mas estou tendo algumas dúvidas.Vou inserir aqui todos os códigos que estou trabalhando.
Código MyApp.java
import java.io.*;
public class MyApp{
public MyApp(){}
public void exibirMensagemLog(String dado)
{
System.out.println("Testando");
}
public void lerArquivo(String path)
{
try
{
FileInputStream fileInputStream = new FileInputStream(path);
}catch(FileNotFoundException filex)
{
System.out.println("Arquivo não encontrado...");
}catch(SecurityException secx)
{
System.out.println(secx.toString());
}
}
public static void main(String args[])
{
String string;
MyApp aplicacao = new MyApp();
aplicacao.exibirMensagemLog("Testando melhoria da aplicacao...");
aplicacao.lerArquivo("C:\\TesteLeitura\\HQL.txt");
aplicacao.lerArquivo("C:\\HQL.txt");
}
}
Bom, minha aplicação irá ler um arquivo txt em C:\TesteLeitura\HQL.txt e em C:\HQL.txt.
Então criei um arquivo do tipo policy,em C:\Teste\myPolicy.policy.
grant codeBase "file:/C:/TesteLeitura/-" {
permission java.security.AllPermission;
};
Então executei pela linha de comando:
C:\Estudo>java -Djava.security.manager -Djava.security.policy=C:\Teste\myPolicy
MyApp
Meu retorno foi:
Testando
java.security.AccessControlException: access denied (java.io.FilePermission C:\T
esteLeitura\HQL.txt read)
java.security.AccessControlException: access denied (java.io.FilePermission C:\H
QL.txt read)
Bom se eu dei permissão para ele acessar somente debaixo de TesteLeitura.Não deveria retornar somente um access denied de C:\HQL.txt?
Valew Pessal