Apostrophe dans un textarea

Résolu
pakito_77 Messages postés 11 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 8 août 2006 - 16 févr. 2006 à 12:17
cs_azra Messages postés 425 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 13 juillet 2007 - 17 févr. 2006 à 18:14
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

jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 févr. 2006 à 16:48
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
3
cs_azra Messages postés 425 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 13 juillet 2007 1
17 févr. 2006 à 16:19
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
0
pakito_77 Messages postés 11 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 8 août 2006
17 févr. 2006 à 16:29
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
0
cs_azra Messages postés 425 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 13 juillet 2007 1
17 févr. 2006 à 16:40
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 févr. 2006 à 16:50
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
0
pakito_77 Messages postés 11 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 8 août 2006
17 févr. 2006 à 16:56
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 ^^
0
jesusonline Messages postés 6814 Date d'inscription dimanche 15 décembre 2002 Statut Membre Dernière intervention 13 octobre 2010 29
17 févr. 2006 à 17:09
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
0
pakito_77 Messages postés 11 Date d'inscription jeudi 26 janvier 2006 Statut Membre Dernière intervention 8 août 2006
17 févr. 2006 à 17:17
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
0
cs_azra Messages postés 425 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 13 juillet 2007 1
17 févr. 2006 à 18:14
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
0
Rejoignez-nous