Avantages de la sécurité de la création de procédures stockées mysql

Contenu

Créer des procédures stockées mysql implique la création d'un ensemble d'instructions SQL, nommez-les et stockez-les dans mysql en tant que groupe. De cette façon, il peut être réutilisé et partagé par plusieurs programmes, tout en obtenant des avantages importants.

istock-693216672-3783833

Crédits photos: Peterpal

L'une des raisons les plus avantageuses pour créer des procédures stockées mysql est la couche de sécurité supplémentaire. qui est placé dans la base de données de l'application demandant des données. Si le compte d'utilisateur créé pour l'application ou le portail Web est configuré avec des autorisations d'exécution uniquement, le compte utilisateur ne pourra pas accéder directement aux tables suivantes.

Ce aide à empêcher un pirate d'accéder directement aux tables de la base de données. Le risque encouru si un pirate utilise ce compte d'utilisateur exécutant une procédure stockée est bien moindre qu'avec un compte d'utilisateur disposant d'autorisations d'insertion complètes, mettre à jour et supprimer directement dans les tables.

Contrôle d'accès lors de la création de procédures stockées mysql

Dans la pratique, lors de la création de procédures stockées mysql, il est possible d'utiliser certaines règles qui facilitent le contrôle du compte Vous pouvez spécifier un utilisateur dans un attribut DEFINER d'objet. Ce sont les suivants:

  • Qu'il est seulement possible de spécifier une valeur DEFINER autre que la sienne, si vous avez le SUPER privilège.
  • Que la seule valeur d'utilisateur légale pour tout le monde sans le privilège SUPER est son propre compte, spécifié littéralement ou via l'utilisation de CURRENT_USER, ce qui rend impossible de définir le setter pour un autre compte.

Un autre avantage de la création de procédures stockées mysql est que le risque potentiel du programme stocké peut être minimisé et voir la création et l'utilisation. Pour faire ceci, suivez simplement ces directives:

  • Utiliser SQL SECURITY INVENTORY dans la définition d'objet lorsque cela est possible pour une routine ou une vue stockée, car cela ne peut être utilisé que par les utilisateurs disposant des autorisations appropriées pour les opérations effectuées par l'objet.
  • Spécifiez un attribut DEFINER explicite lors de la création de programmes ou de vues stockés dans le contexte de définition, tout en utilisant un compte qui a le privilège SUPER, puisque cet attribut fera référence à un compte qui n'a que les privilèges requis pour les opérations effectuées par l'objet. Uniquement dans les cas où cela est absolument nécessaire, un compte DEFINER avec de nombreux privilèges peut être spécifié.
  • Empêcher les utilisateurs de spécifier des comptes DEFINER hautement privilégiés, quelque chose que, en tant qu'administrateurs peut être atteint en créant des procédures stockées mysql, tant qu'ils ne bénéficient pas du privilège SUPER.
  • Décrit les objets dans le contexte DEFINER en tenant compte du fait qu'ils peuvent avoir accès à des données pour lesquelles l'utilisateur appelant n'a pas de privilèges. Dans certains cas, vous pouvez éviter de référencer ces objets si vous n’accordez pas de privilèges particuliers à des utilisateurs non autorisés. Pour ca, il suffirait de déterminer que les utilisateurs sans le privilège d’exécution ne peuvent pas référencer des fonctions ou des procédures stockées et que les utilisateurs disposant du privilège approprié ne peuvent jamais référencer une vue (comme ce serait le cas, par exemple, de SELECT à sélectionner ou INSERT à insérer).

Malgré cela, n'oublie pas ça ces types de mesures de sécurité lors de la création de procédures stockées mysql ne peuvent pas être appliqués aux déclencheurs et aux événements, car ils n’ont pas de fonctionnalité de sécurité SQL et s’exécutent toujours dans un contexte de définition, il n’y a donc pas d’utilisateur pour s’y référer directement.

(une fonction(ré, s, identifiant) {
var js, fjs = d.getElementsByTagName(s)[0];
si (d.getElementById(identifiant)) revenir;
js = d.createElement(s); js.id = identifiant;
js.src = “//connect.facebook.net/es_ES/all.js#xfbml=1&état=0”;
fjs.parentNode.insertAvant(js, fjs);
}(document, 'scénario', 'facebook-jssdk'));

Abonnez-vous à notre newsletter

Nous ne vous enverrons pas de courrier SPAM. Nous le détestons autant que vous.