Sicherheitsvorteile der Erstellung von gespeicherten Mysql-Prozeduren

Inhalt

Gespeicherte mysql-Prozeduren erstellen beinhaltet das Erstellen eines Satzes von SQL-Anweisungen, Benennen Sie sie und speichern Sie sie in MySQL als Gruppe. Auf diese Weise kann es wiederverwendet und von mehreren Programmen gemeinsam genutzt werden., Gleichzeitig einige wichtige Vorteile erzielen.

istock-693216672-3783833

Bildnachweis: Peterpal

Einer der vorteilhaftesten Gründe für die Erstellung von gespeicherten MySQL-Prozeduren ist die zusätzliche Sicherheitsebene.. die in der Datenbank der anfordernden Anwendung abgelegt wird. Wenn das für die App oder das Webportal erstellte Benutzerkonto nur mit Ausführungsberechtigungen konfiguriert ist, Das Benutzerkonto kann nicht direkt in die folgenden Tabellen eingegeben werden.

Dies Verhindert, dass ein Hacker direkt auf Datenbanktabellen zugreift. Das Risiko, das entsteht, wenn ein Hacker das Benutzerkonto verwendet, das eine gespeicherte Prozedur ausführt, ist viel geringer als bei einem Benutzerkonto mit vollständigen Pushberechtigungen, Aktualisieren und Löschen direkt in Tabellen.

Zugriffskontrolle beim Erstellen von gespeicherten mysql-Prozeduren

In der Praxis, Beim Erstellen von gespeicherten MySQL-Prozeduren, Es ist möglich, einige Regeln zu verwenden, die die Steuerung des Kontos erleichtern Sie können einen Benutzer in einem Object Define-Attribut angeben. Das sind die folgenden:

  • Dass es nur möglich ist, einen anderen DEFINE-Wert als Ihr eigenes Konto anzugeben, Wenn Sie die SUPER Privileg.
  • Dass der einzige legale Benutzerwert für alle, die nicht das SUPER-Privileg haben, ihr eigenes Konto ist, ob es wörtlich oder durch die Verwendung von CURRENT_USER spezifiziert wurde, Dadurch ist es nicht möglich, den Switch für ein anderes Konto zu konfigurieren.

Ein weiterer Vorteil der Erstellung gespeicherter MySQL-Prozeduren besteht darin, dass Sie das potenzielle Risiko des gespeicherten Programms minimieren können und Ansicht der Erstellung und Verwendung. Um dies zu tun, Befolgen Sie einfach diese Richtlinien:

  • Verwenden der SQL-Sicherheitsinventur in der Objektdefinition wenn dies für eine gespeicherte Routine oder Ansicht möglich ist, Da dies nur von Benutzern mit den entsprechenden Berechtigungen für die vom Objekt ausgeführten Vorgänge verwendet werden kann.
  • Geben Sie ein explizites DEFINE-Attribut an, wenn Sie Programme oder Ansichten erstellen, die im Kontext des Schalters gespeichert sind., während der Verwendung eines Kontos, das über die SUPER-Berechtigung verfügt, Da sich dieses Attribut auf ein Konto bezieht, das nur über die Berechtigungen verfügt, die für vom Objekt ausgeführte Vorgänge erforderlich sind. Nur in Fällen, in denen es unbedingt notwendig ist, Sie können ein Definer-Konto mit vielen Berechtigungen angeben.
  • Verhindern, dass Benutzer DEFINER-Konten mit vielen Berechtigungen angeben, etwas, das, Da Administratoren durch Erstellen von gespeicherten MySQL-Prozeduren erreicht werden können, solange ihnen das SUPER-Privileg nicht gewährt wird.
  • Beschreibt Objekte im DEFINER-Kontext in Anbetracht der Tatsache, dass sie auf Daten zugreifen können, für die der aufrufende Benutzer keine Berechtigungen hat. In manchen Fällen, Sie können vermeiden, auf diese Objekte zu verweisen, wenn Sie nicht autorisierten Benutzern keine bestimmten Berechtigungen gewähren. Dafür, Es genügt festzustellen, dass Benutzer ohne die Berechtigung "Ausführen" nicht auf Funktionen oder gespeicherte Prozeduren verweisen können und dass Benutzer mit der entsprechenden Berechtigung niemals auf eine Ansicht verweisen können (wie es der Fall wäre, als Beispiel, von SELECT zum Auswählen oder INSERT zum Einfügen).

Trotz dieses, Vergiss das nicht Diese Arten von Sicherheitsmaßnahmen beim Erstellen von gespeicherten MySQL-Prozeduren können nicht auf Trigger und Ereignisse angewendet werden, Weil sie nicht über ein SQL-Sicherheitsfeature verfügen und immer in einem Definitionskontext ausgeführt werden, Es gibt also keinen Benutzer, der direkt auf sie verweist.

(Funktion(D, S, Ich würde) {
var js, fjs = d.getElementsByTagName(S)[0];
Wenn (d.getElementById(Ich würde)) Rückkehr;
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);
}(dokumentieren, 'Skript', 'facebook-jssdk'));

Abonniere unseren Newsletter

Wir senden Ihnen keine SPAM-Mail. Wir hassen es genauso wie du.