Vantaggi in termini di sicurezza derivanti dalla creazione di stored procedure Mysql

Contenuti

Creare stored procedure mysql comporta la creazione di un set di istruzioni SQL, denominarli e memorizzarli in mysql come gruppo. In questo modo può essere riutilizzato e condiviso da più programmi, ottenendo allo stesso tempo alcuni importanti vantaggi.

istock-693216672-3783833

Crediti fotografici: Peterpal ·

Uno dei motivi più vantaggiosi per la creazione di stored procedure mysql è il livello extra di sicurezza.. que se coloca en la Banca dati de la aplicación que solicita datos. Se l'account utente creato per l'app o il portale Web è configurato solo con autorizzazioni di esecuzione, L'account utente non può essere immesso direttamente nelle seguenti tabelle.

Questo Consente di impedire a un hacker di accedere direttamente alle tabelle del database. 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, aggiornamento ed eliminazione direttamente nelle tabelle.

Controllo degli accessi durante la creazione di stored procedure mysql

In pratica, Quando si creano stored procedure Mysql, È possibile utilizzare alcune regole che semplificano il controllo dell'account È possibile specificare un utente in un attributo Object Define. Questi sono i seguenti:

  • Che è possibile specificare solo un valore DEFINE diverso dal proprio account, Se si dispone dell'opzione Privilegio SUPER.
  • Che l'unico valore utente legale per tutti coloro che non hanno il privilegio SUPER è il proprio account, se è stato specificato letteralmente o attraverso l'uso di CURRENT_USER, rendendo impossibile configurare lo switch per qualsiasi altro account.

Un altro vantaggio della creazione di stored procedure Mysql è che è possibile ridurre al minimo il rischio potenziale del programma memorizzato e visualizzare la creazione e l'utilizzo. Per fare questo, basta seguire queste linee guida:

  • Utilizzare l'inventario di sicurezza SQL nella definizione dell'oggetto quando possibile per una routine o una visualizzazione memorizzata, Poiché questo può essere utilizzato solo da utenti con le autorizzazioni appropriate per le operazioni eseguite dall'oggetto.
  • Specificare un attributo DEFINE esplicito quando si creano programmi o viste archiviati nel contesto dello switch, durante l'utilizzo di un account con privilegio SUPER, Poiché tale attributo farà riferimento a un account che dispone solo dei privilegi necessari per le operazioni eseguite dall'oggetto. Solo nei casi in cui è assolutamente necessario, È possibile specificare un account Definer con molti privilegi.
  • Impedire agli utenti di specificare account DEFINER con molti privilegi, qualcosa che, Come gli amministratori possono essere ottenuti creando stored procedure Mysql, fintanto che non viene concesso loro il privilegio SUPER.
  • Vengono descritti gli oggetti nel contesto DEFINER considerando che possono accedere a dati per i quali l'utente che richiama non dispone di privilegi. In alcuni casi, È possibile evitare di fare riferimento a questi oggetti se non si concedono privilegi particolari a utenti non autorizzati. Per questo, Sarebbe sufficiente stabilire che gli utenti senza il privilegio di esecuzione non possono fare riferimento a funzioni o stored procedure e che gli utenti con il privilegio appropriato non possono mai fare riferimento a una visualizzazione (come sarebbe il caso, come esempio, a partire dal SELEZIONARE para seleccione o INSERIRE para insertarlo).

Nonostante questo, non dimenticare quello Questi tipi di misure di protezione durante la creazione di stored procedure MySQL non possono essere applicate a trigger ed eventi, Poiché non dispongono di una funzionalità di protezione SQL e vengono sempre eseguiti in un contesto di definizione, quindi non c'è nessun utente che si riferisca direttamente a loro.

(funzione(D, S, ID) {
var js, fjs = d.getElementsByTagName(S)[0];
Se (d.getElementById(ID)) Restituzione;
js = d.createElement(S); js.id = id;
js.src = “//connect.facebook.net/es_ES/all.js#xfbml=1&stato=0”;
fjs.parentNode.insertBefore(js, fjs);
}(documento, 'copione', 'facebook-jssdk'));

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.