Joven hacker sonriendo

Hackeamos su software

cero falsos positivos

Inteligencia experta + automatización eficaz

Definir Control de Acceso a Miembros de Clases

Nuestros ethical hackers explican en que consiste el control de acceso y porque es importante tenerlo en cuenta a la hora de proteger la información. Además, mediante un ejemplo explican como se establece el control de acceso por defecto en los miembros de una clase.

Necesidad

Definir control de acceso por defecto a miembros de clases.

Contexto

A continuación se describen las circunstancias bajo las cuales la siguiente solución tiene sentido:

  1. Se va a programar utilizando el lenguaje Java.

  2. Se quiere encapsular el acceso a un miembro de una clase desde clases pertenecientes a otros paquetes.

Solución

El control de acceso se define como un conjunto de reglas que, tal como su nombre lo indica, permite o rechaza el acceso a determinados componentes de un sistema. Para poder realizar dicho control, el usuario que solicita el acceso, por lo general, debe autenticarse ante el sistema para que este pueda identificar el rol que desempeña el usuario y así brindarle o negarle el acceso solicitado.

Por lo general, el control de acceso se hace con el fin de cumplir los siguientes objetivos:

Mantener la integridad de la información. Esto se refiere a que toda la información que se almacena sólo pueda ser modificada por las personas autorizadas.

Preservar la confidencialidad de la información. En este caso, se hace referencia a que la información confidencial únicamente pueda ser consultada o leída por los roles definidos para tal fin. Cualquier otro rol, no tendrá acceso a dicha información.

Mantener el control de acceso, es decir, tener siempre disponible información sobre quien y porque ha accedido a determinado recurso. Esto, con el fin de que, en caso de que suceda algún evento que comprometa la seguridad y la integridad de la información, saber quien, posiblemente, fue el responsable.

En esta solución abordaremos la manera adecuada de establecer mecanismos de control de acceso a los diferentes métodos y atributos de una clase.

  1. Los miembros de las clases, es decir, métodos y atributos, poseen cuatro tipos de modificadores de acceso: public, protected, default y private.

  2. Todos los miembros de la clase originalmente tienen el identificador default, esto indica que sólo los miembros de la misma clase o paquete podrán acceder al método o atributo original.

  3. Para verificar tal comportamiento, se creará una clase con el modificador en default.

    person.java
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package fluidattacks;
    
    public class Person {
      int attribute;
    
      void method() {
        System.out.println("Method was invoked");
      }
    }
    
  4. Después se creará otra clase que utilizará la previamente creada.

    cli.java
    1
    2
    3
    4
    5
    6
    7
    8
    9
    package fluidattacks;
    
    class CLI {
      public static void main(String[] args) {
        Person p = new Person();
        p.attribute = 1;
        p.method();
      }
    }
    
  5. Se compilan las clases y se ejecuta la clase CLI.

    compilar.bash
    1
    2
    3
    4
    $ javac fluidattacks/*.java
    $ java fluidattacks.CLI
    
    Method was invoked
    
  6. Por último, se creara una clase externa con el fin de intentar acceder a la clase persona.

    cli2.java
    1
    2
    3
    4
    5
    6
    7
    8
    9
    import fluidattacks.Person;
    
    class CLI2 {
      public static void main(String[] args) {
        Person p = new Person();
        p.attribute = 1;
        p.method();
      }
    }
    
  7. Debido a que el modificador de acceso sólo permite miembros de la misma clase o paquete, al momento de compilar saldrá un error de control de acceso.

    error.bash
    1
    2
    3
    4
    5
    6
    7
    CLI2.java:8: attribute is not public in fluidattacks.Person;
      cannot be accessed from outside package
      p.attribute = 1;
    
    CLI2.java:9: method() is not public in fluidattacks.Person;
      cannot be accessed from outside package
      p.method();
    

Descargas

Puedes descargar el código fuente pulsando en los siguientes enlaces:

Person.java Clase Person.

CLI.java Clase CLI.

CLI2.java Clase CLI2.




Haz un comentario

Estado de los servicios - Términos de Uso