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

PHP & Base de données Discussion :

Copier/coller de 200 caractères dans input text malgré maxlenght à 15


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Par défaut Copier/coller de 200 caractères dans input text malgré maxlenght à 15
    Bonjour,

    Je viens de faire un truc bizarre et je voudrais comprendre, cela m'inquiète pour la sécurité.


    Les inputs text de mon formulaire d'inscription on un attribut maxlenght dont la valeur est 15. Impossible donc d'écrire plus de 15 caractères.



    Mais j'ai fais un copier d'une ligne de texte en chinois sur le site d'adsense et je l'ai collé dans un input de mon formulaire. Et là toute la ligne est passée ! Je me dis que ce peut être un problème pour la sécurité.

    J'ai essayé avec du texte bien de chez nous, et là le coller est tronqué à 15, c'est normal.



    Qu'en pensez-vous ? A quoi est-ce dû ?

  2. #2
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Par défaut
    Bizzard.

    Sur mon site, j'ai "pensé" à quelque chose de ce genre alors, si tu peux vérifier ce input lors de l'envoie, fais un truc du genre:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    if(!ereg('^[a-zA-Z]+$', $input))
     {
     echo 'Ca foire';
     }
    PS: t'as posté 2 fois ton topic

  3. #3
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Par défaut
    Ton idée est bonne, effectivement OVH m'avait indiqué de toujours forcer un masque pour les données des formulaires.

    A part ça, quelqu'un peut pirater une base en entrant des codes en chinois qui échaperaient aux fonctions de filtrage (htmlspecialchars, mysql_real_escape_string) ?


    Pendant que nous y sommes, aurais-tu sous le coude l'expression rationnelle qui permet dans ton exemple de n'autoriser que les lettres, éventuellement accentuées, et les chiffres ?

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Par défaut
    Un peu parano sur les bords

    Pour le code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $input = //valeur du champ
     
    if(!ereg('^[a-zA-Z0-9]+$', $input))
     echo 'Pas bon';
    Je crois que c'est ce que tu veux.

  5. #5
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Par défaut
    Merci pour le bout de code Tu es certains que les accents sont compris là dedans ?


    Un peu parano sur les bords
    Mieux vaut prévenir que guérir !

    (M'enfin c'est vrai que là je suis à deux doigts de pondre un forum avec des sessions cryptées...)


    J'avais lu que les pirates peuvent contourner les fonctions de filtrage en changeant l'encodage des caractères. Une histoire d'UTF-8 et d'ASCI si je me souviens bien.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    224
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 224
    Par défaut
    Il me semble que les accents sont gérés.

    Sûr à 99%

    Vaut mieux se méfier des pirates effectivement, mais parfois, en allant au plus simple, on est le plus sécurisé

  7. #7
    Invité
    Invité(e)
    Par défaut
    Salut,

    Les valeurs MAXLENGHT (typiquement) des formulaires sont des valeurs purement indicatives, ça doit jamais être pris comme valeur de contrôle absolu.

    Il est simple de copier un formulaire, de le "forger", et d'envoyer les données en outrapassant les limites de caractères (entre autres) ou les valeurs attendues par le script PHP.

    Donc, il faut toujours controler les saisies coté serveur, par des expressions régulières ou des fonctions dédiées aux chaînes de caractère.

  8. #8
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Par défaut
    Citation Envoyé par Guardian_7
    Salut,

    Les valeurs MAXLENGHT (typiquement) des formulaires sont des valeurs purement indicatives, ça doit jamais être pris comme valeur de contrôle absolu.

    Il est simple de copier un formulaire, de le "forger", et d'envoyer les données en outrapassant les limites de caractères (entre autres) ou les valeurs attendues par le script PHP.

    Donc, il faut toujours controler les saisies coté serveur, par des expressions régulières ou des fonctions dédiées aux chaînes de caractère.
    Intéressant commentaire que je vais prendre en compte au plus vite. Ceci étant quand tu parles de copier un formulaire, il s'agit tout de même de réussir à l'uploader sur le serveur ,non ?

  9. #9
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par psychoBob
    Intéressant commentaire que je vais prendre en compte au plus vite. Ceci étant quand tu parles de copier un formulaire, il s'agit tout de même de réussir à l'uploader sur le serveur ,non ?
    Non, c'est bien plus simple que ça. Il suffit de copier le formulaire en question en local, le modifier, puis entrer l'adresse du script qui est sensé recevoir le formulaire dans <form action="">

    Exemple :

    Ton formulaire se nomme http://www.exemple.com/formulaire.html

    La page qui réceptionne les saisies du formulaire s'appelle http://www.exemple.com/control_formulaire.php

    Je télécharge le formulaire.html en local, je le modifie à ma guise, puis dans la balise form je mets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form action="http://www.exemple.com/control_formulaire.php">
    Il y'a également des outils malveillants qui peuvent faire ça.

    Je le mets sur un serveur quelquonc, et je l'envoie...

    Donc, toujours controler les saisies du coté serveur (Faut pas craindre d'être trop parano à ce niveau là !).

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par psychoBob

    A part ça, quelqu'un peut pirater une base en entrant des codes en chinois qui échaperaient aux fonctions de filtrage (htmlspecialchars, mysql_real_escape_string) ?
    Selon moi, non.

    Lorsque il y'a des caractères spéciaux qui sont entrés, htmlspecialchars effectue quand même une conversion (dans un encodage par défaut, ou alors dans l'encodage qui peut être définit en 3ème paramètre optionnel de la fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    // Exemple
     
     $new = htmlspecialchars("<a href='test'>Test</a>", ENT_QUOTES, ENCODAGE);
    Donc au pire, ça affichera des caractères curieux à l'écran... sans intervenir au-delà.

    En ce qui concerne mysql_real_escape_string, cette fonction échape les caractères en fonction de l'encodage de la connexion MySQL. Donc pas de problème à premier vue.

    (Ce n'est pas le cas pour la fonction mysql_escape_string)

  11. #11
    Membre éprouvé
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 221
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 221
    Par défaut
    Ok

    Merci à vous tous pour vos réponses. Je n'ai pas d'autres question là, ça doit être l'heure...

    Demain je reprend mon formulaire d'inscription en le blindant à mort (c'est à dire avec des fagots de paille mais bon).


    Je ne marque pas résolu tout de suite, dès fois qu'une question me vienne en dormant.

    (Je vais me renseigner sur le magazine Hackademy Magazine : la meilleur défense, c'est l'attaque parait-il. Je vais m'auto pirater un de ces jours).

Discussions similaires

  1. copier coller dans input text
    Par BRUNO71 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 25/11/2011, 09h23
  2. [CSS][IE]image dans input text
    Par lejert dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 23/05/2009, 01h31
  3. Réponses: 3
    Dernier message: 26/05/2006, 19h49
  4. Réponses: 1
    Dernier message: 28/02/2006, 08h40
  5. [Word][ISO-...] Copier coller d'un word dans un textArea
    Par yolepro dans le forum Servlets/JSP
    Réponses: 1
    Dernier message: 14/11/2005, 17h34

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