Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Controler une saisie dans un champ de recherche texte

4 réponses
Avatar
fabrice
Bonjour à tous.

Je suis exposé à un petit problème de controle d'une saisie d'un champ texte
dans un formulaire.
L'objet étant simple, entrer une chaîne alpha-numérique en vue d'une
recherche dans une base de données.

Je suis en VB.NET.

Sur le Control TextBox j'ai attaché deux Controles de validation notamment
pour éviter le SQL Injection.
Un ASP:RequiredFieldValidator
Un ASP:RegularExpressionValidator

Voici mon expression régulière ValidationExpression="^[a-zA-Z
0-9*/,.-?]{3,20}".
J'autorise les lettres, les chifres et les caractères suivants * / , . - ?
et je limite entre 3 et 20 caractères. Je précise que je ne suis pas
spécialiste de ces expressions.

Mon problème est le suisvant. J'autorise le signe * pour les troncatures. Si
je mets au moins 3 caractères c'est pour éviter que l'utilisateur ramène
tous les enregistrements de la base.
Mais comment éviter qu'un petit malin envoit la chaine suivante *** et alors
bingo il ramène tous puisque le signe * est traité comme le sgne de
troncature SQL.


J'ai envisagé la solution après que la validation de la page, de traiter
encore la chaine pour compter les occurences du signe * et de refuser
l'execution si j'en ai plus de deux.
Et dans ce cas y a t il une "bonne manière" de faire cela ?.


merci

fabrice

4 réponses

Avatar
Jean-François Borie
après le *[0,2]
essaye

"fabrice" a écrit :

Bonjour à tous.

Je suis exposé à un petit problème de controle d'une saisie d'un champ texte
dans un formulaire.
L'objet étant simple, entrer une chaîne alpha-numérique en vue d'une
recherche dans une base de données.

Je suis en VB.NET.

Sur le Control TextBox j'ai attaché deux Controles de validation notamment
pour éviter le SQL Injection.
Un ASP:RequiredFieldValidator
Un ASP:RegularExpressionValidator

Voici mon expression régulière ValidationExpression="^[a-zA-Z
0-9*/,.-?]{3,20}".
J'autorise les lettres, les chifres et les caractères suivants * / , . - ?
et je limite entre 3 et 20 caractères. Je précise que je ne suis pas
spécialiste de ces expressions.

Mon problème est le suisvant. J'autorise le signe * pour les troncatures. Si
je mets au moins 3 caractères c'est pour éviter que l'utilisateur ramène
tous les enregistrements de la base.
Mais comment éviter qu'un petit malin envoit la chaine suivante *** et alors
bingo il ramène tous puisque le signe * est traité comme le sgne de
troncature SQL.


J'ai envisagé la solution après que la validation de la page, de traiter
encore la chaine pour compter les occurences du signe * et de refuser
l'execution si j'en ai plus de deux.
Et dans ce cas y a t il une "bonne manière" de faire cela ?.


merci

fabrice





Avatar
fabrice
j'ai bien essayé mais cela ne donne rien.

fab

"Jean-François Borie" a écrit
dans le message de news:

après le *[0,2]
essaye

"fabrice" a écrit :

Bonjour à tous.

Je suis exposé à un petit problème de controle d'une saisie d'un champ
texte
dans un formulaire.
L'objet étant simple, entrer une chaîne alpha-numérique en vue d'une
recherche dans une base de données.

Je suis en VB.NET.

Sur le Control TextBox j'ai attaché deux Controles de validation
notamment
pour éviter le SQL Injection.
Un ASP:RequiredFieldValidator
Un ASP:RegularExpressionValidator

Voici mon expression régulière ValidationExpression="^[a-zA-Z
0-9*/,.-?]{3,20}".
J'autorise les lettres, les chifres et les caractères suivants * / , . -
?
et je limite entre 3 et 20 caractères. Je précise que je ne suis pas
spécialiste de ces expressions.

Mon problème est le suisvant. J'autorise le signe * pour les troncatures.
Si
je mets au moins 3 caractères c'est pour éviter que l'utilisateur ramène
tous les enregistrements de la base.
Mais comment éviter qu'un petit malin envoit la chaine suivante *** et
alors
bingo il ramène tous puisque le signe * est traité comme le sgne de
troncature SQL.


J'ai envisagé la solution après que la validation de la page, de traiter
encore la chaine pour compter les occurences du signe * et de refuser
l'execution si j'en ai plus de deux.
Et dans ce cas y a t il une "bonne manière" de faire cela ?.


merci

fabrice







Avatar
nicolas franchet
([a-zA-Z0-9/,.-?]{3,20})([*]{0,1})
et qqchose comme ca ? mais ca implique que le * est a la fin de la
chaine obligatoirement

fabrice a écrit :
j'ai bien essayé mais cela ne donne rien.

fab

"Jean-François Borie" a écrit
dans le message de news:


après le *[0,2]
essaye

"fabrice" a écrit :


Bonjour à tous.

Je suis exposé à un petit problème de controle d'une saisie d'un champ
texte
dans un formulaire.
L'objet étant simple, entrer une chaîne alpha-numérique en vue d'une
recherche dans une base de données.

Je suis en VB.NET.

Sur le Control TextBox j'ai attaché deux Controles de validation
notamment
pour éviter le SQL Injection.
Un ASP:RequiredFieldValidator
Un ASP:RegularExpressionValidator

Voici mon expression régulière ValidationExpression="^[a-zA-Z
0-9*/,.-?]{3,20}".
J'autorise les lettres, les chifres et les caractères suivants * / , . -
?
et je limite entre 3 et 20 caractères. Je précise que je ne suis pas
spécialiste de ces expressions.

Mon problème est le suisvant. J'autorise le signe * pour les troncatures.
Si
je mets au moins 3 caractères c'est pour éviter que l'utilisateur ramène
tous les enregistrements de la base.
Mais comment éviter qu'un petit malin envoit la chaine suivante *** et
alors
bingo il ramène tous puisque le signe * est traité comme le sgne de
troncature SQL.


J'ai envisagé la solution après que la validation de la page, de traiter
encore la chaine pour compter les occurences du signe * et de refuser
l'execution si j'en ai plus de deux.
Et dans ce cas y a t il une "bonne manière" de faire cela ?.


merci

fabrice












Avatar
fabrice
Hello nicolas.

Je viens d'essayer, cela fonctionne parfaitement. a voir si l'usage du signe
uniquement en début et/ou fin de la chaine sera confirmé.
Sinon peut etre devrais je partir sur une petite procédure de calcul
d'occurences.

En tout cas merci beaucoup, je garde l'astuce dans un coin.
fabrice

"nicolas franchet" a écrit dans le message
de news: ddv8pv$dej$
([a-zA-Z0-9/,.-?]{3,20})([*]{0,1})
et qqchose comme ca ? mais ca implique que le * est a la fin de la chaine
obligatoirement

fabrice a écrit :
j'ai bien essayé mais cela ne donne rien.

fab

"Jean-François Borie" a
écrit dans le message de news:


après le *[0,2]
essaye

"fabrice" a écrit :


Bonjour à tous.

Je suis exposé à un petit problème de controle d'une saisie d'un champ
texte
dans un formulaire.
L'objet étant simple, entrer une chaîne alpha-numérique en vue d'une
recherche dans une base de données.

Je suis en VB.NET.

Sur le Control TextBox j'ai attaché deux Controles de validation
notamment
pour éviter le SQL Injection.
Un ASP:RequiredFieldValidator
Un ASP:RegularExpressionValidator

Voici mon expression régulière ValidationExpression="^[a-zA-Z
0-9*/,.-?]{3,20}".
J'autorise les lettres, les chifres et les caractères suivants * / , . -
?
et je limite entre 3 et 20 caractères. Je précise que je ne suis pas
spécialiste de ces expressions.

Mon problème est le suisvant. J'autorise le signe * pour les
troncatures. Si
je mets au moins 3 caractères c'est pour éviter que l'utilisateur ramène
tous les enregistrements de la base.
Mais comment éviter qu'un petit malin envoit la chaine suivante *** et
alors
bingo il ramène tous puisque le signe * est traité comme le sgne de
troncature SQL.


J'ai envisagé la solution après que la validation de la page, de traiter
encore la chaine pour compter les occurences du signe * et de refuser
l'execution si j'en ai plus de deux.
Et dans ce cas y a t il une "bonne manière" de faire cela ?.


merci

fabrice