Les balises serveur ne peuvent pas contenir <% ... %>????

pilou812 Messages postés 7 Date d'inscription vendredi 13 octobre 2006 Statut Membre Dernière intervention 19 septembre 2008 - 18 sept. 2008 à 15:08
pilou812 Messages postés 7 Date d'inscription vendredi 13 octobre 2006 Statut Membre Dernière intervention 19 septembre 2008 - 19 sept. 2008 à 09:07
Bonjour,

Je souhaite passer dans une balise constructs

Mon code est le suivant:
       LIKE '%<%=Request.QueryString("recherche")%>%' ORDER By Nom, Prénom">

Pourriez vous m'aider?
Cordialement

4 réponses

Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009
18 sept. 2008 à 15:37
Salut,


Non tu ne peux pas faire comme ça.
Il faut que tu modifies dans le code behind dans le Load de ta page omme ceci :
ParentSqlDataSource.SelectCommand = "SELECT * FROM Annuaire WHERE " & Request.QueryString("type") & " LIKE '%" & Request.QueryString("recherche") & "%' ORDER By Nom, Prénom"

Mais je te déconseille TRES fortement de récupérer un paramètre d'url et de l'envoyer en pature comme ceci dans ta ligne de commande. Tu ouvres une porte énorme au SQL Injection et met en péril ta base de données

A++

Nix

[MVP VB, VB .NET ASP .NET] - Le blog de Nix
0
pilou812 Messages postés 7 Date d'inscription vendredi 13 octobre 2006 Statut Membre Dernière intervention 19 septembre 2008
18 sept. 2008 à 15:40
Merci Nix de ta réponse et ta rapidité!

Ca focntionne ainsi
Quel conseil peux tu me donner pour contourner ce problème de securité?
Merci
0
Nix Messages postés 831 Date d'inscription samedi 15 mai 1999 Statut Membre Dernière intervention 18 juillet 2009
18 sept. 2008 à 21:24
Et bien si c'est un SQL Server je te conseil de faire des procédures stockées et de les utiliser plutôt que d'envoyer la requête "manuellement". Le risque ici, c'est par exemple que quelqu'un mette un ' dans ton paramètre et ajoute un DROP DATABASE; derrière par exemple (c'est la version courte) mais on peut faire bien pire.


Pour contrer ça tu peux faire une "bidouille" vite fait qui consiste à doubler les ' tu fais un function qui fait un simple replace de "'" par "''" comme ça t'es sur que si un ' est enoyé dans tes params il sera doublé et ensuite tu construit come ceci :
ParentSqlDataSource.SelectCommand = "SELECT * FROM Annuaire WHERE " & TaFunction(Request.QueryString("type")) & " LIKE '%" & TaFunction(Request.QueryString("recherche")) & "%' ORDER By Nom, Prénom"

Ca sera déjà plus sécure même si c'est pas très élégant.

A++

Nix

[MVP VB, VB .NET ASP .NET] - Le blog de Nix
0
pilou812 Messages postés 7 Date d'inscription vendredi 13 octobre 2006 Statut Membre Dernière intervention 19 septembre 2008
19 sept. 2008 à 09:07
Bonjour Nix

Merci de ta réponse.
Je vais regarder pour utiliser les procedures stockées.
Ca sera plus propre ainsi :)
Merci encore
0
Rejoignez-nous