2013-10-11 7 views
0

Je voulais donc savoir s'il existe une méthode acceptable pour autoriser l'injection SQL.Comment autoriser l'injection SQL en toute sécurité?

Exemple:

autorisations limites sur la table (s)/base de données (s)

Pourquoi demandez-vous?

Mon employeur voulait trouver un moyen de tester les compétences des candidats, il a été suggéré de permettre les soumissions de curriculum vitae par injection SQL.

Des pensées? suggestions?

enter image description here

+4

Je pense que votre patron a besoin de laisser les trucs techniques aux professionnels. –

+0

Ne vous méprenez pas, mais les gens cherchent des moyens d'empêcher l'injection SQL et votre patron cherche des moyens de l'avoir! Strange :) –

+0

Quelle entreprise intéressante pour laquelle vous travaillez. Je suppose que l'instance isolée avec des rôles limités devrait faire l'affaire –

Répondre

1

Vous pouvez utiliser des rôles. Créez un rôle pour l'application Web (ou autre) utilisée pour se connecter à la base de données. Limitez ce rôle à uniquement autoriser INSERT et accéder aux tables nécessaires à l'application. Les candidats ayant accès à votre base de données via l'application peuvent alors utiliser uniquement les injections SQL pour ajouter leur CV.

Il est peut-être possible pour quelqu'un de plus talentueux dans SQL d'utiliser des injections d'une manière qui augmente l'autorisation du rôle. Mais je pense que si le rôle avait un accès limité à des tables spécifiques et n'avait pas de privilèges CREATE ou GRANT, l'utilisateur ne serait pas en mesure de créer de nouveaux rôles.

Voici quelques informations sur les rôles pour vous aider à démarrer:

Adding Roles to MySQL with MySQL Workbench

Creating Roles in PostgreSQL

GRANT command - utilisé pour ajouter des privilèges aux utilisateurs sur la table, base de données, etc. Cette page est pour PostgreSQL, mais MySQL est très similaire (voir this SO answer)

+0

les candidats ne pourraient-ils simplement INSÉRER leurs CV sans avoir besoin d'une injection SQL? –

+1

Si vous avez juste un formulaire pour les candidats à entrer un nom et un email pour être alerté lorsque les postes sont affichés. Pas de moyen direct pour télécharger CV, mais le formulaire fournit un contact à la base de données. Puis semblable à la bande dessinée, vous pourriez mettre «Matt»); INSERT resume ... 'dans le champ de nom. Je ne suis pas très clair sur ce que vous avez configuré pour eux ou quelles instructions sont données. – Matt

+0

Alternativement, vous pourriez juste avoir une base de données séparée pour que les demandeurs injectent leurs informations. Les demandeurs peuvent contourner l'accès limité initial et faire autant de dommages qu'ils veulent sans que votre employeur ne perde l'information dont ils ont besoin. Ensuite, demandez à un script d'enregistrer les informations ailleurs (afin qu'un candidat ne supprime pas d'autres CV) et réinitialisez les privilèges de la base de données à leur accès limité initial. – Matt

-1

Étant donné que la raison derrière cela est de tester la capacité des gens, créer une base de données avec les données que vous pouvez vous permettre de perdre. Mettre en place un formulaire qui enregistre dans un fichier coldfusion ou php ou java ou .net ou un autre type de page qui se connecte à cette base de données.

Sur la forme, mettre un textarea et le bouton soumettre. Sur la page cible du formulaire, consignez ce qu'ils ont placé dans la zone de texte. Comparez le journal à la base de données pour voir comment il s'est avéré.

tester ensuite à la grande joie de votre cœur.

Questions connexes