Beneficios de seguridad de la creación de procedimientos almacenados mysql

Contents

Crear procedimientos almacenados de mysql implica crear un conjunto de declaraciones SQL, Name and store them in MySQL as a group. De esta forma puede ser reutilizado y compartido por múltiples programas, obteniendo al mismo tiempo algunas ventajas importantes.

istock-693216672-3783833

Photo credits: Peterpal

Una de las razones más beneficiosas para crear procedimientos almacenados mysql es la capa adicional de seguridad. que se coloca en la base de datos de la aplicación que solicita datos. Si la cuenta de usuario creada para la aplicación o el portal web está configurada solo con permisos de ejecución, la cuenta de usuario no podrá entrar de forma directa a las tablas siguientes.

This ayuda a evitar que un pirata informático acceda de forma directa a las tablas de la base de datos. El riesgo en el que se incurre si un pirata informático utiliza esa cuenta de usuario que ejecuta un procedimiento almacenado es mucho menor que con una cuenta de usuario que tiene permisos completos de inserción, actualización y eliminación de forma directa en las tablas.

Control de acceso al crear procedimientos almacenados mysql

In practice, al crear procedimientos almacenados de mysql, es factible usar algunas reglas que facilitan el control de la cuenta Puede especificar un usuario en un atributo DEFINER de objeto. These are the following:

  • Que solo es factible especificar un valor DEFINER que no sea su propia cuenta, si tiene el SÚPER privilegio.
  • Que el único valor de usuario legal para todos los que no disponen el privilegio SUPER es su propia cuenta, ya sea que se haya especificado literalmente o a través de el uso de CURRENT_USER, haciendo imposible configurar el definidor para alguna otra cuenta.

Otra ventaja de crear procedimientos almacenados mysql es que se puede minimizar el riesgo potencial del programa almacenado y ver la creación y el uso. To do this, simplemente siga estas pautas:

  • Utilice el INVENTARIO DE SEGURIDAD SQL en la definición de objeto cuando sea factible para una rutina o vista almacenada, dado que esto solo puede ser utilizado por usuarios con los permisos adecuados para las operaciones hechas por el objeto.
  • Especifique un atributo DEFINER explícito al crear programas o vistas almacenados en el contexto del definidor, mientras se utiliza una cuenta que tiene el privilegio SUPER, dado que ese atributo se referirá a una cuenta que solo tiene los privilegios requeridos para las operaciones hechas por el objeto. Solo en los casos en que sea absolutamente necesario, se podría especificar una cuenta DEFINER con muchos privilegios.
  • Impedir que los usuarios especifiquen cuentas DEFINER con muchos privilegios, something that, como administradores se pueden lograr creando procedimientos almacenados mysql, siempre que no se les otorgue el privilegio SUPER.
  • Describe los objetos en el contexto DEFINER teniendo en cuenta que pueden tener acceso a datos para los que el usuario que invoca no tiene privilegios. In some cases, se puede evitar hacer referencia a estos objetos si no se otorgan privilegios particulares a usuarios no autorizados. For this, bastaría con determinar que los usuarios sin el privilegio EXECUTE no pueden hacer referencia a funciones o procedimientos almacenados y que los usuarios con el privilegio adecuado nunca pueden hacer referencia a una vista (como sería el caso, as an example, de SELECT para seleccione o INSERT para insertarlo).

Despite this, do not forget that este tipo de medidas de seguridad al crear procedimientos almacenados de mysql no se pueden aplicar a desencadenadores y eventos, dado que no disponen una característica de SEGURIDAD SQL y siempre se ejecutan en un contexto de definición, por lo que no hay un usuario para referirse a ellos de forma directa.

(function(d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) return;
js = d.createElement(s); js.id = id;
js.src = “//connect.facebook.net/es_ES/all.js#xfbml=1&status=0”;
fjs.parentNode.insertBefore(js, fjs);
}(document, ‘script’, 'facebook-jssdk'));

Subscribe to our Newsletter

We will not send you SPAM mail. We hate it as much as you.