IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Comment 'escape' tous les caractères sensibles d'un string?


Sujet :

C#

  1. #1
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut Comment 'escape' tous les caractères sensibles d'un string?
    Bonjour à tous,

    Mon appli manipule des strings qui sont stockés dans une base de donnée.
    Seulement ces strings peuvent contenir du html ou autres caractères spéciaux (notamment quote ' ).

    Je voudrai savoir comment 'sécuriser' l'ensemble des caractères contenus dans un string et qui pourraient être sensibles.

    Merci

  2. #2
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Qu'est ce que tu appelles "sécuriser" ?
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  3. #3
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut
    le plus simple je dirai par exemple, transformer tous les ' en \' .
    ça pourrait bien être aussi un procédé tel que urlencode en php.

  4. #4
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Split?

  5. #5
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut
    euh... je vois pas trop là.

    j'ai un string disons celui là:

    mon_string = "<balise id='truc' class='machin'>ah la la</balise>";

    Il ne peut pas etre inséré dans la base de donnée à cause des caractères spéciaux. Je veux donc lui appliquer une fonction, qui le transformera en :

    "<balise id=\'truc\' class=\'machin\'>ah la la</balise>"

    ou même:

    "\<balise id=\'truc\' class=\'machin\'\>ah la la\<\/balise\>"

    bref quelque soit, quelque chose qui rentrera dans la base.

  6. #6
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    Citation Envoyé par Sunsawe Voir le message
    mon_string = "<balise id='truc' class='machin'>ah la la</balise>";
    Il ne peut pas etre inséré dans la base de donnée à cause des caractères spéciaux..
    Pourqoui ne pas utiliser les SqlParameter?

  7. #7
    Expert éminent
    Avatar de StormimOn
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2005
    Messages
    2 593
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2005
    Messages : 2 593
    Points : 7 660
    Points
    7 660
    Par défaut
    C'est probablement la meilleure solution ^^
    Pas de questions techniques par MP

  8. #8
    Membre extrêmement actif Avatar de fally
    Homme Profil pro
    Développeur .Net / BI
    Inscrit en
    Novembre 2007
    Messages
    966
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Bénin

    Informations professionnelles :
    Activité : Développeur .Net / BI

    Informations forums :
    Inscription : Novembre 2007
    Messages : 966
    Points : 1 173
    Points
    1 173
    Par défaut
    J'ai omis de m'expliquer: j'ai cru comprendre que tu enregistres ton string dans une base de données et que c'est à cause des caractères comme ' " / et compagnie que tu as posté! Eh bien les SqlParameter te gèrent tout celà; ils bouffent tout

  9. #9
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut
    ça a en effet l'air de pouvoir palier à pas mal de chose.

    Le problème, c'est que la base n'est pas de type ms sql. C'est une base embarquée. Pour l'instant je teste avec Firebird, mais il ne s'agit que de tests.
    Elle sera certainement remplacée.

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Points : 81
    Points
    81
    Par défaut
    Je ne sais pas si ça répond à ton problème, mais au pire, la classe String possède la méthode replace : tu remplaces "'" par "\'" avant de l'insérer ...

    Bonne journée

  11. #11
    Membre actif
    Inscrit en
    Mai 2005
    Messages
    348
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 348
    Points : 281
    Points
    281
    Par défaut
    Bonjour,

    J'y avais pensé tout en espérant qu'il y ait quelque chose de plus formel.

    D'un autre coté, je viens de tenter avec replace et il semble que celà pose toujours un problème.
    Lors de l'insert dans la base selon cette requete par exemple:

    INSERT INTO ma_table(mon_champ) VALUES('la pomme de l\'instit');

    Une erreur est produite parce que le quote ' de l\'instit est pris en compte comme un indicateur de fin d'argument.

  12. #12
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Points : 6 334
    Points
    6 334
    Par défaut
    Alors utilise des paramètres SQL : http://johannblais.developpez.com/tu...acces-donnees/
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  13. #13
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2008
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Mars 2008
    Messages : 88
    Points : 81
    Points
    81
    Par défaut
    Sinon, mais je ne sais pas si ça marche pour tous les SGBD (sql server c'est sur), tu dois remplacer dans ta commande les ' par des '' (deux fois ').

    Donc au pire, en remplaçant " ' " par " '' " ca va le faire ... Mais je suis d'accord c'est un peu moche, surtout à coté des paramètres sql qui sont vraiment faits pour ça.

    Bonne journée

Discussions similaires

  1. Réponses: 13
    Dernier message: 09/01/2008, 01h32
  2. Réponses: 7
    Dernier message: 03/10/2007, 17h58
  3. [String] comment virer tous les espaces vides ?
    Par Alec6 dans le forum Langage
    Réponses: 6
    Dernier message: 26/07/2004, 14h27
  4. [Tomcat] Comment supprimer tous les logs ?
    Par Soulsurfer dans le forum Tomcat et TomEE
    Réponses: 8
    Dernier message: 11/05/2004, 16h35
  5. Réponses: 4
    Dernier message: 16/08/2003, 13h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo