Joven hacker sonriendo

Cero falsos positivos

Inteligencia experta + automatización eficaz

Usar Procedimientos Almacenados

Nuestros ethical hackers explican que son los procedimientos almacenados, para que se usan y cuales son las ventajas de utilizarlos en el desarrollo seguro de aplicaciones. POr último, muestran un ejemplo de un procedimiento almacenado y como trabajar con él desde Java.

Necesidad

Se requiere utilizar procedimientos almacenados desde una aplicación Java.

Contexto

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

  1. Se tiene una aplicación en Java que ejecuta sentencias en una base de datos relacional.

  2. El motor de la base de datos relacional soporta la creación de procedimientos almacenados o funciones personales.

Solución

A través de los años, las bases de datos han sido una herramienta de uso indispensable para cualquier organización y/o empresa, ya que estas permiten recopilar y almacenar información casi de cualquier tipo. Eso sí, dicha información es almacenada de una forma organizada y centralizada de tal manera que permitan una administración sencilla de la misma.

Entonces, como las bases de datos suelen manejar toda la información de una organización, se hace obligatorio que la creación, acceso y mantenimiento de las mismas se haga de la manera más segura posible.

Por lo tanto, los procedimientos almacenados son un conjunto de comandos que pueden ser ejecutados directamente en el servidor de base de datos en vez de ser ejecutados por un programa externo. En ese orden de ideas, los procedimientos almacenados se guardan dentro de la misma base de datos a la cual están accediendo, por lo que son un objeto más de la base de datos.

En general, los procedimientos almacenados tienden a ser usados con el fin de preservar la integridad de la información almacenada. Además, como los comandos son ejecutados dentro del mismo servidor, el tráfico de red se ve ampliamente reducido. porque únicamente el cliente está enviando al servidor la llamada que va a ejecutar el procedimiento almacenado en vez de enviar infinidad de consultas SQL que podrían retrasar el funcionamiento de la misma aplicación.

Por otro lado, los procedimientos almacenados controlan qué procesos y actividades se llevan a cabo. Lo anterior permite eliminar la necesidad de conceder permisos en cada nivel de objetos logrando una mayor seguridad de forma más simple y sencilla.

También, el uso de procedimientos almacenados traduce en aplicaciones más manejables y, en la mayoría de las ocasiones, más óptimas.

  1. El siguiente código es un ejemplo de muestra de como se puede crear un procedimiento almacenado.

    procedure.sql
    1
    2
    3
    4
    5
    6
    create procedure set_death_age(poet VARCHAR2, poet_age NUMBER)
      poet_id NUMBER;
    begin
      SELECT id INTO poet_id FROM poets WHERE name = poet;
      INSERT INTO deaths (mort_id, age) VALUES (poet_id, poet_age);
    end set_death_age;
    
  2. La siguiente clase de Java, enseña la manera de acceder a los datos almacenados en la base de datos usando el procedimiento almacenado creado previamente.

    procedure.java
     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public static void setDeathAge(Poet dyingBard, int age) throws SQLException {
      Connection con = null;
      CallableStatement proc = null;
      try {
        con = connectionPool.getConnection();
        proc = con.prepareCall("{ call set_death_age(?, ?) }");
        proc.setString(1, dyingBard.getName());
        proc.setInt(2, age);
        proc.execute();
      }
      finally {
        try {
          proc.close();
        }
        catch (SQLException e) {
          // code for trying the exception
        }
        con.close();
      }
    }
    



Haz un comentario

Estado de los servicios - Términos de Uso