2010-01-11 3 views
0

J'ai ce problème plutôt classique lors de l'interaction avec des bases de données de gestion des guillemets simples et des caractères spéciaux. En PHP j'échappe au guillemet simple avec un autre guillemet simple et les caractères de syntaxe regex avec preg_quote et ils travaillent en tant que pro. Le problème est avec javascript, il y a quelques points dans mes scripts où je passe directement les variables de base de données à l'exécution dans le javascript pour le construire et c'est là où il se brise.javascript simple double citation problème

Voici un exemple:

var href = "region_view.php?min_row=1&max_row=25&reg_name=^*&new''region' blah£"&order_by=reg_name asc"; 

Notez la variable reg_name, ce qui me donne une erreur dans la console Firebug que l'affectation invalide côté gauche. La première question est, y at-il une fonction comme eval ou quelque chose qui peut prendre soin de ces guillemets simples par défaut? Deuxième question est, ce type de choses sont faites tout au long de l'application. Revenir à travers chaque ligne javascript et en prenant soin de guillemets simples et doubles sera une tâche difficile à faire. Y at-il quelque chose comme global qui peut résoudre ce problème?

Mes questions peuvent sembler stupides mais j'ai googlé, je n'ai rien trouvé, je suis arrivé ici dans l'espoir si quelqu'un peut trouver une solution pour cela.

Merci,

+0

Désolé pour la confusion. Non, je ne construis pas SQL en javascript ni ceci est regex. Ceci est un nom de région de test avec beaucoup de caractères spéciaux, juste pour voir où il se sépare, tous ces caractères sont échappés avant d'entrer, mais^* & new''region 'blah £ "est un nom de région et pendant l'élaboration de ce javascript , reg_name variable a la valeur du nom de la région qui existe dans db, c'est pourquoi reg_name =^* & new''region 'blah £ ". Je peux utiliser à nouveau la fonction PHPs sur fetch pour échapper les caractères spéciaux pour javascript mais les mêmes variables sont utilisées pour afficher les données dans les zones de saisie. Ceux-là vont aussi. –

Répondre

1

Vous devriez être en mesure d'échapper à tout simplement les citations:

var quotes = "\"Quoted String\"" 

Une autre chose: Si je vois bien, vous passez une expression régulière à travers la chaîne de paramètres. Je ne connais pas d'exploits spécifiques, mais mon instinct me dit que c'est un trou de sécurité potentiel et devrait être évité.

0

Appelez la fonction php addslashes() sur votre chaîne.

3

Jamais ne construisait de code SQL en JavaScript. Envoyez toujours les valeurs pures au serveur et laissez-les leur échapper correctement, puis créez le SQL. Sinon, un pirate ou un script kiddie va casser votre site. Notez qu'il existe des scripts automatisés flottant sur le net qui recherchent de telles vulnérabilités et piratent votre site en un seul clic.