Apostrophe dans un textarea [Résolu]

Signaler
Messages postés
11
Date d'inscription
jeudi 26 janvier 2006
Statut
Membre
Dernière intervention
8 août 2006
-
Messages postés
425
Date d'inscription
mercredi 22 janvier 2003
Statut
Modérateur
Dernière intervention
13 juillet 2007
-
Bonjour a tous,
Voila mon probleme, je voudrais pouvoir enregistrer dans ma bdd un textarea, jusqu'ici pas de soucis, jusqu'a ce que l'utilisateur passe un apostrophe dans son
texte.
J'ai fait des recherche sur le net et j'ai pu voir certaine astuce du genre replace ou de doubler les quotes. Mais concretement, je n'arrive pas a l'appliquer a mon code.
Je fait donc appel a vos lumieres pour m'aider un tit peu, voici le code en question:


<%
'*** Commentaires ***
Commentaires = Request.Form("Commentaires")


ValeursCommentaires = "'" & IDProjet &"','" & Commentaires & "'"



'Ouverture de la Base FormulaireSAV sur Nirvana
'et céation du lien
Set BaseLink = Server.CreateObject("ADODB.Connection")
BaseLink.Open "FormulaireSAV", "", ""
'Création du RecordSet
Set BaseSet = Server.CreateObject("ADODB.Recordset")
'Création de la requête
varsql = "insert into Commentaires(IDProjet,Commentaires) values (" & ValeursCommentaires & ")"
'Exécution de la requête
BaseSet.open varSql, BaseLink
'Fermeture de la Base
BaseLink.Close


Set BaseSet = Nothing
Set BaseLink = Nothing


%>
Le champs en question est commentaire!
Je débute en Asp, donc si vous pouviez m'epargnier les termes trop technique ^^
Merci d'avance...

9 réponses

Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
Bonjour,

je te conseille aussi (et surtout) de te renseigner sur les attaques de type sql injection car la ton site n'est pas secure du tout !!!

Pour pallier tout cela il faudrais mieux utiliser des procédure stockées, l'utilisation de procédure stocké je connais pas en asp mais par contre c'est trés simple en asp.net. Donc oublie asp 3 (qui est trés trés vieux !) et passe à asp.net 2 voici un excellent point de départ :

http://www.microsoft.com/france/msdn/aspnet/coach.mspx

en plus en utilisant des procédures stockées, les apostrophe et autres choses du genre ne vont plus t'embeter ....

Dans ton cas il faudrais faire

ValeursCommentaires = "'" & IDProjet &"','" & replace(Commentaires, "'", "''") & "'"

Mais si je tape dans ton textarea

toto'); drop table Commentaires

oups je viens de supprimer ta table ...

et on peut faire pire, ecrire une page sur le serveur par exemple et avoir un accés total :)
http://www.evilznet.com/blog.aspx?ctl=ViewEntry&EntryID=31&mid=387

bref oublie cette solution est passe aux procédures stockés !


<HR>
Cyril - MVS - MCP ASP
Messages postés
425
Date d'inscription
mercredi 22 janvier 2003
Statut
Modérateur
Dernière intervention
13 juillet 2007

Bonjour,

Tout d'abord, ce n'est pas un problème ASP mais un problème SQL, les simples quotes fesant partis de la synthaxe du langage.
En C#/asp.net tu peux par exemple faire un ValeursCommentaires.Replace("'", "''");
Il te faut trouver un équivalent.


<HR>
Azra (Florent) - MVS - MCAD.NET
Messages postés
11
Date d'inscription
jeudi 26 janvier 2006
Statut
Membre
Dernière intervention
8 août 2006

Désolé, comme je l'ai dis je suis débutant en programmation et je ne connais pas encore les subtilité et autre therme des differents langage,
J'ai bien vu sur ce site ou d'autre, l'exemple du replace, mais je n'arrive malheureusement pas a l'appliquer a mon code, c'est pourquoi je voulais savoir concretement par rapport a mon code qu'est ce que je devais faire?


Azra pour ton exemple, il faut que je le mette sur ma page contenant mon formulaire avec mon textarea ou sur ma page ou je recupere la valeur (cf code plus haut) ?
Merci pour ta reponse
Messages postés
425
Date d'inscription
mercredi 22 janvier 2003
Statut
Modérateur
Dernière intervention
13 juillet 2007

Re Bonjour,

Il faut que tu fasses le replace avant d'inserer tes données en base: juste avant varsql = "insert into Commentaires(IDProjet,Commentaires) values (" & ValeursCommentaires & ")"

au niveau de "ValeursCommentaires " (donc par ex ValeursCommentaires.Replace(blabla). (une fois que cela fonctionnera, on parlera de sécurité et d'injectionSQL).

Bon courage!


<HR>
Azra (Florent) - MVS - MCAD.NET
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
mdr, j'avais pas vu ton post azra :)

Donc oui une fois que t'auras réussit à faire fonctionner ca, tu pourras mettre aux oubliettes cette solution ! (et j'insiste !!)


<HR>
Cyril - MVS - MCP ASP
Messages postés
11
Date d'inscription
jeudi 26 janvier 2006
Statut
Membre
Dernière intervention
8 août 2006

merci pour vos conseil, je n'avais meme pas songé a ca, pour ce qui est de ce formulaire il n'y aucune crainte a avoir de coté la, puisqu'il est sur l'intranet de mon entreprise, et que seul les techniciens y auront acces.
Enfin je le saurais pour la prochaine fois, et eviterais de faire ca si je met en ligne une chose similaire.
JesusOnline j'ai testé ta solution et ca marche nikel, encore merci pour l'aide et pour les conseils ^^
Messages postés
6814
Date d'inscription
dimanche 15 décembre 2002
Statut
Modérateur
Dernière intervention
13 octobre 2010
28
même pour un intranet ... il ne faut pas faire confiance aux utilisateurs ... imagine que dans la base tu stockes leur fiche de paye ...

et puis c'est tellement plus simple de prendre les bonnes habitudes du début !


<HR>
Cyril - MVS - MCP ASP
Messages postés
11
Date d'inscription
jeudi 26 janvier 2006
Statut
Membre
Dernière intervention
8 août 2006

Tu as raisons, jvais me renseigner sur l'asp.net 2 et les procedures stockés, disont que pour ce code je laisserais ainsi (c'est juste un formulaire qui etait autrefois sur papier et qui ne comporte aucune donnée personnelle ou d'importance)
mais je compte m'attaquer aux notes de frais sur le meme principe de formulaire, et je pense en effet qu'un peu plus de securité serait le bienvenue, vue les données traitées.
Encore une fois merci pour vos precieux conseils, et bonne continuation
Messages postés
425
Date d'inscription
mercredi 22 janvier 2003
Statut
Modérateur
Dernière intervention
13 juillet 2007

Pour télécharger les versions gratuite de VS 2005 (dont web express pour ASP.NET 2.0): http://blogs.developpeur.org/nix/articles/TELECHARGER_VISUAL_STUDIO_2005_EXPRESS_FRANCAIS_GRATUIT.aspx


<HR>
Azra (Florent) - MVS - MCAD.NET