2008-09-11 9 views
4

Je suis un peu confus ici. Microsoft autant que je peux dire affirme que la paramétrisation est le meilleur moyen de protéger votre base de données contre les attaques par injection SQL. Mais je trouve ici deux sources d'information contradictoires:paramétrisation dans VBScript/ASP Classic et ADO

This page dit d'utiliser l'objet de commande ADO. Mais this page indique que l'objet de commande n'est pas sûr pour le script. Je me rappelle avoir lu quelque part que l'objet de commande ne devrait pas être utilisé dans VBScript ou JScript en raison de failles de sécurité, mais je n'arrive pas à trouver cet article.

Ai-je oublié quelque chose ici, ou ces deux articles semblent-ils se contredire?

Répondre

4

Je peux me tromper ici, mais je pense que cela signifie simplement que quelqu'un pourrait utiliser l'objet Command pour faire de mauvaises choses. C'est à dire. Ce n'est pas digne de confiance si quelqu'un d'autre le script.

Voir safe for scripting dans cet article. Chaque instance qui parle de cette phrase en ligne, la référence comme si vous étiez en train de marquer un contrôle ActiveX en disant "Ce contrôle ne fait pas d'E/S ou répond seulement au serveur d'où il vient" mais l'objet Command ne le fait pas. Il peut être utilisé pour faire beaucoup de choses qui pourraient être dangereuses.

Le «coffre-fort» dont ils parlent et le «coffre-fort» pour empêcher l'injection SQL sont deux choses différentes. L'article sur l'utilisation de l'objet de commande ADO pour paramétrer vos données est sur place. Tu devrais faire ça.

Et, Microsoft confirme encore cette ici:

http://msdn.microsoft.com/en-us/library/ms676585(v=VS.85).aspx

1

Je pense que « sûr pour les scripts » signifie « sûr à être exécuté à partir d'une page Web que nous venons de quelque prince récupéré du Nigeria ». L'objet de commande doit pouvoir s'exécuter en toute sécurité sur le serveur.

Au travail, cependant, à l'époque, mes collègues ne me faisaient pas confiance, nous avions donc un cadre interne qui faisait essentiellement la même chose.