SóProvas


ID
4878802
Banca
FGV
Órgão
Senado Federal
Ano
2012
Provas
Disciplina
Programação
Assuntos

A classe NaoSegura a seguir contém uma vulnerabilidade uma vez que ela expõe o atributo privado da classe.


public class NaoSegura {

private Date data;

public NaoSegura() {

data = new Date();

}

public Date getData() {

return data;

}

}


Assinale a alternativa que apresenta uma solução para o problema.

Alternativas
Comentários
  • seria muito bom uma explicação do professor

  • Isso, vamos solicitar o comentário do professor.

  • Nem gates...

  • A classe Date do Java é mutável. Quem usa a classe NaoSegura pode modificar o valor da data, que é um atributo privado, que não deveria ser modificado.

    Exemplo:

    NaoSegura naoSegura = new NaoSegura();

    System.out.println(naoSegura.getData()); //Data como foi criada no construtor

    naoSegura.getData().setTime(0L); //Alterou a data usando Date.setTime()

    System.out.println(naoSegura.getData()); //A data está modificada aqui

    Já quando usa return (Date)data.clone(), sempre é retornada uma cópia da data, então mesmo que o usuário modifique, está modificando apenas a cópia, não afetando as próxima invacações de naoSegura.getData(), que continuará retornando uma cópia do valor original.