2010-03-30 12 views
0

Si je double accidentellement une chaîne, le DB peut-il être endommagé?Est-il possible que l'échappement double cause des dommages à la DB?

Aux fins de cette question, disons que je ne suis pas en utilisant des procédures ou des requêtes paramétrées

Par exemple stockés, disons que je reçois l'entrée suivante:

bob's bike

Et j'échapper que:

bob\'s bike

Mais mon code est horrible, et échappe à nouveau:

bob\\\'s bike

Maintenant, si j'insérer que dans un DB, la valeur de la base de données sera

bob\'s bike

qui, tout en n'est pas ce que je veux, ne nuira pas à la DB. Est-il possible que toute entrée à double échappement échappe à la BD en supposant que je prenne toutes les précautions de sécurité nécessaires?

Répondre

1

L'échappement simple est aussi dangereux/inoffensif que le double échappement en termes de sécurité.

Le plus gros problème est que vous devez double-unescape. Sinon, si vous ne faites qu'un seul effacement, vous obtiendrez des barres obliques inverses dans la sortie de la base de données. Par exemple, si vous exécutez bob\\\'s bike par l'intermédiaire de la fonction unescape(), il affichera bob\'s bike qui sera ensuite imprimé sur la page, à moins que vous ne le remettiez à nouveau. Mais n'échappez pas trop souvent, car cela peut éliminer les backslashes intentionnels (et peut-être faire plus de mal).

Est-ce que cette question a quelque chose à voir avec les citations magiques de PHP? Juste curieux ...

1

en supposant que je prends toutes les autres précautions de sécurité nécessaires

Coder en dur SQL et/ou les valeurs des paramètres dans une application ne doit jamais être considéré comme « prendre les mesures de sécurité nécessaires », parce que vous serez toujours soumis aux attaques par injection SQL (dans le cas d'une application Web). Il est préférable d'utiliser des procédures stockées si vous le pouvez, et si ce n'est pas une option, vous devriez au moins utiliser des requêtes paramétrées (bind variables est un autre terme pour cela).

Mais pour répondre à votre question, stocker bob\'s bike dans la base de données ne va pas faire de mal en soi, mais prenez soin de considérer les autres points mentionnés ci-dessus, ils sont d'une importance vitale pour des raisons de sécurité.