Account Options

  1. Sign in
The old Google Groups will be going away soon.
Switch to the new Google Groups.
Google Groups Home
« Groups Home
perte de caractere @ dans un get
There are currently too many topics in this group that display first. To make this topic appear first, remove this option from another topic.
There was an error processing your request. Please try again.
flag
  10 messages - Collapse all  -  Translate all to Translated (View all originals)
The group you are posting to is a Usenet group. Messages posted to this group will make your email address visible to anyone on the Internet.
Your reply message has not been sent.
Your post was successful
 
From:
To:
Cc:
Followup To:
Add Cc | Add Followup-to | Edit Subject
Subject:
Validation:
For verification purposes please type the characters you see in the picture below or the numbers you hear by clicking the accessibility icon. Listen and type the numbers you hear
 
Eric Stern  
View profile   Translate to Translated (View Original)
 More options Jan 21, 3:14 pm
Newsgroups: fr.comp.lang.php
From: "Eric Stern" <x...@coulommiers.org>
Date: Sat, 21 Jan 2012 21:14:58 +0100
Local: Sat, Jan 21 2012 3:14 pm
Subject: perte de caractere @ dans un get
Bonsoir,

N'etant pas un developpeur chevroné, j'espere que vous excuserez la question
basique que je vais poser.

le contexte: wordpress chez OHV.

le probleme:

le caractere @ est systematiquement suprimé de $_GET['mail']

si je rentre @@@@ par exemple,  $_GET['mail'] est vide.

je verrai bien un pb de secu mais je ne sais pas trop ou chercher.

un google php $_GET lost/perte @ me trouve plein de chose mais pas du php ;)

Merci

Eric

========================================================================

                <form action="<?php bloginfo('wpurl');
?>/index.php/content/bulletin" method="get" name="maildata"><input
name="mail" type="text" size="15" maxlength="150" /><input name="ok"
type="submit" value="ok" /></form>

                <?php $result = ($_GET['result']); ?>

    <?php if ($result==merci) { ?>

                <span><br />Votre adresse a bien &eacute;t&eacute;
enregistr&eacute;e. Merci.</span>

                <?php } elseif ($result==existe) { ?>

                <span class="rouge"><br />Votre adresse a d&eacute;j&agrave;
&eacute;t&eacute; enregistr&eacute;e.</span>

    <?php } elseif ($result==erreur) { ?>

                <span class="rouge"><br />Erreur. Veuillez renseigner
&agrave; nouveau votre adresse.</span>

                <?php } elseif ($result==0) { } ?>

===============================================================

<?php
if (isset($_GET['mail'])) {
$verif = $wpdb->query("SELECT * FROM maildata WHERE
adresse='".$_GET['mail']."'");
if ($verif ==0) {
$wpdb->query('INSERT INTO maildata (adresse) VALUES("'.$_GET['mail'].'")');
$TO = 'xxxxxxxxxxxxxxxxxxxx';
$limite = "_----------=_parties_".md5(uniqid (rand()));
$subject = 'Nouvelle inscription au bulletin';
$text = 'Nouvelle inscription au bulletin à l\'adresse : '.$_GET['mail'];
$html = '<p>Nouvelle inscription au bulletin à l\'adresse :
<strong>'.$_GET['mail'].'</strong></p>';
$h = 'From: '.$TO."\n";
$h .= "X-Mailer: PHP\n";
$h .= "X-auth-smtp-user: ".$TO." \n";
$h .= "X-abuse-contact: ".$TO." \n";
$h .= "Date: ".date("D, j M Y G:i:s O")."\n";
$h .= "MIME-Version: 1.0\n";
$h .= "Content-Type: multipart/alternative; boundary=\"".$limite."\"";
$message = "";

$message .= "--".$limite."\n";
$message .= "Content-Type: text/plain\n";
$message .= "charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $text;

$message .= "\n\n--".$limite."\n";
$message .= "Content-Type: text/html; ";
$message .= "charset=\"iso-8859-1\"; ";
$message .= "Content-Transfer-Encoding: 8bit;\n\n";
$message .= $html;

$message .= "\n--".$limite."--";

mail($TO, $subject, $message, $h);

$TO2 = $_GET['mail'];
$text = 'Votre inscription a bien été prise en compte. Pour vous
désinscrire, veuillez vous rendre à cette adresse :
http://xxxxxxxxxxxxxxxxxx';
$html = '<p>Votre inscription a bien été prise en compte. Pour vous
désinscrire, veuillez vous rendre à cette adresse : <a
href="xxxxxxxxxxxxxxxxx</a></p>';
$subject = "Inscription .";
$h = 'From: '.$TO."\n";
$h .= "X-Mailer: PHP\n";
$h .= "X-auth-smtp-user: ".$TO." \n";
$h .= "X-abuse-contact: ".$TO." \n";
$h .= "Date: ".date("D, j M Y G:i:s O")."\n";
$h .= "MIME-Version: 1.0\n";
$h .= "Content-Type: multipart/alternative; boundary=\"".$limite."\"";
$message = "";

$message .= "--".$limite."\n";
$message .= "Content-Type: text/plain\n";
$message .= "charset=\"iso-8859-1\"\n";
$message .= "Content-Transfer-Encoding: 8bit\n\n";
$message .= $text;

$message .= "\n\n--".$limite."\n";
$message .= "Content-Type: text/html; ";
$message .= "charset=\"iso-8859-1\"; ";
$message .= "Content-Transfer-Encoding: 8bit;\n\n";
$message .= $html;

$message .= "\n--".$limite."--";
mail($TO2, $subject, $message, $h);

header('Location: http://xxxxxxxxxxxxx?result=merci');

}

elseif ($verif !==0) {
header('Location: http://xxxxxxxxxxxxxxxx?result=existe');
}}

else
{
header('Location: http://xxxxxxxxxxxxxx?result=erreur');


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Pierre Maurette  
View profile   Translate to Translated (View Original)
 More options Jan 22, 5:32 am
Newsgroups: fr.comp.lang.php
From: Pierre Maurette <maurette.pie...@free.fr>
Date: Sun, 22 Jan 2012 11:32:08 +0100
Local: Sun, Jan 22 2012 5:32 am
Subject: Re: perte de caractere @ dans un get
Eric Stern :

Perte d'un @ ? Vous seriez passé de @@@ à @@+ ?

--
Pierre Maurette


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Olivier Miakinen  
View profile   Translate to Translated (View Original)
 More options Jan 22, 6:29 pm
Newsgroups: fr.comp.lang.php
From: Olivier Miakinen <om+n...@miakinen.net>
Date: Mon, 23 Jan 2012 00:29:17 +0100
Local: Sun, Jan 22 2012 6:29 pm
Subject: Re: perte de caractere @ dans un get
Bonjour,

Le 21/01/2012 21:14, Eric Stern a écrit :

> N'etant pas un developpeur chevroné, j'espere que vous excuserez la question
> basique que je vais poser.

Oui, bien sûr.

> le contexte: wordpress chez OHV.

Je ne connais pas wordpress, quant à OHV, dois-je supposer que c'est
OVH ?

> le probleme:

> le caractere @ est systematiquement suprimé de $_GET['mail']

> si je rentre @@@@ par exemple,  $_GET['mail'] est vide.

Ça ne se produit pas si tu renommes le paramètre en autre chose que
'mail' ?

> je verrai bien un pb de secu mais je ne sais pas trop ou chercher.

Si ça marche avec $_GET['zorglub'] et pas avec $_GET['mail'], alors
c'est sûrement une protection à la con chez l'hébergeur.

Bon, voyons le code.

> ========================================================================

>                 <form action="<?php bloginfo('wpurl');
> ?>/index.php/content/bulletin" method="get" name="maildata"><input
> name="mail" type="text" size="15" maxlength="150" /><input name="ok"
> type="submit" value="ok" /></form>

>                 <?php $result = ($_GET['result']); ?>

>     <?php if ($result==merci) { ?>

Euh... « merci » c'est une constante définie par define("merci", ...) ?
Si oui, il est d'usage de mettre les constantes en majuscules. Mais si
comme je le suppose tu veux comparer avec la chaîne fixe « "merci" »,
c'est un bug dans ton code qui devrait générer une alerte de type
E_NOTICE.

Voir <http://php.net/manual/fr/language.constants.syntax.php>.

>                 <?php } elseif ($result==existe) { ?>

Idem.

>                 <span class="rouge"><br />Votre adresse a d&eacute;j&agrave;
> &eacute;t&eacute; enregistr&eacute;e.</span>

Le « class="rouge" », ce n'est pas une erreur de PHP, mais une mauvaise
conception HTML : une classe devrait définir une sémantique, pas une
apparence.

> ===============================================================

> <?php
> if (isset($_GET['mail'])) {
> $verif = $wpdb->query("SELECT * FROM maildata WHERE
> adresse='".$_GET['mail']."'");

Euh... tu ne vérifies pas la valeur avant de passer une donnée
utilisateur à une requête de base de donnée ? Tu as déjà entendu
parler d'injection SQL ?

Voir <http://fr.wikipedia.org/wiki/Injection_SQL>.

> if ($verif ==0) {
> $wpdb->query('INSERT INTO maildata (adresse) VALUES("'.$_GET['mail'].'")');

Idem.

> [...]

> $TO2 = $_GET['mail'];
> [...]
> mail($TO2, $subject, $message, $h);

ARRRRGHHH !!!

S'il te plaît, débranche *IMMÉDIATEMENT* ton site, il est probablement
déjà utilisé par des spammeurs pour envoyer des pubs pour le Viagra à
la terre entière !

Puis fais appel à un professionnel pour passer en revue tous tes scripts
ou pour les réécrire. Il te résoudra au passage ton problème de « @ »
qui ne passe pas.

Je suis sérieux. Merci de stopper le plus vite possible cette source de
spam involontaire (de ta part).

Cordialement,
--
Olivier Miakinen


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Eric Stern  
View profile   Translate to Translated (View Original)
 More options Jan 27, 7:11 am
Newsgroups: fr.comp.lang.php
Followup-To: fr.comp.lang.php
From: Eric Stern <x...@coulommiers.org>
Date: Fri, 27 Jan 2012 13:11:26 +0100
Local: Fri, Jan 27 2012 7:11 am
Subject: Re: perte de caractere @ dans un get
Olivier Miakinen disait:

Bonjour

> Ça ne se produit pas si tu renommes le paramètre en autre chose que
> 'mail' ?

je vais essayer.... comme c'est tombé en panne du jour au lendemain, je
pense aussi à une protection quelconque.

>>                <form action="<?php bloginfo('wpurl');
>> ?>/index.php/content/bulletin" method="get" name="maildata"><input
>> name="mail" type="text" size="15" maxlength="150" /><input name="ok"
>> type="submit" value="ok" /></form>

>>                 <?php $result = ($_GET['result']); ?>

>>     <?php if ($result==merci) { ?>

> Euh... « merci » c'est une constante définie par define("merci", ...) ?
> Si oui, il est d'usage de mettre les constantes en majuscules. Mais si
> comme je le suppose tu veux comparer avec la chaîne fixe « "merci" »,
> c'est un bug dans ton code qui devrait générer une alerte de type
> E_NOTICE.

OK

>>                 <span class="rouge"><br />Votre adresse a
>>                 d&eacute;j&agrave;
>> &eacute;t&eacute; enregistr&eacute;e.</span>

> Le « class="rouge" », ce n'est pas une erreur de PHP, mais une mauvaise
> conception HTML : une classe devrait définir une sémantique, pas une
> apparence.

OK

>> <?php
>> if (isset($_GET['mail'])) {
>> $verif = $wpdb->query("SELECT * FROM maildata WHERE
>> adresse='".$_GET['mail']."'");

> Euh... tu ne vérifies pas la valeur avant de passer une donnée
> utilisateur à une requête de base de donnée ? Tu as déjà entendu
> parler d'injection SQL ?

oui, j'ai supprimé la vérification pour être certain que ce n'était pas la
cause pendant les tests.
normallement, ya ça

if (isset($_GET['mail']) && preg_match("/^[\w\.-]+@[\w\.-]+\.[a-z]{2,3}$/i",
$_GET['mail'])

est ce suffisant ?

> ARRRRGHHH !!!
>> mail($TO2, $subject, $message, $h);
> S'il te plaît, débranche *IMMÉDIATEMENT* ton site, il est probablement
> déjà utilisé par des spammeurs pour envoyer des pubs pour le Viagra à
> la terre entière !

> Puis fais appel à un professionnel pour passer en revue tous tes scripts
> ou pour les réécrire. Il te résoudra au passage ton problème de « @ »
> qui ne passe pas.

Pas de panique, cette partie (l'envoi de courriel) n'y est plus depuis que
ça ne marche plus...
Evidemment,en relisant, je comprends le ARRRRGHHH !!!
je suppose que votre grande crainte est que le vilain pas beau soit maître
de $message ?

là ou le bât blesse,c'est que c'est un professionnel qui l'a écrit .........
mais à titre privé en bénévolat,s'agissant d'un site d'association.

mon seul boulot a été de tracer pourquoi ça ne marchait plus.
en virant tout les tests, (celle dont vous parliez contre le SQL INJECTION
et celle qui renvoie à merci),ça m'a permit de voir la disparition du @ dans
la base.

Merci

Eric (mais vraiment pas développeur web,qu'un peu en C des fois le WK)


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Tonton Th  
View profile  
 More options Jan 27, 10:06 am
Newsgroups: fr.comp.lang.php
From: Tonton Th <t...@la.bas.invalid>
Date: Fri, 27 Jan 2012 16:06:08 +0100
Local: Fri, Jan 27 2012 10:06 am
Subject: Re: perte de caractere @ dans un get
On 01/27/2012 01:11 PM, Eric Stern wrote:

> if (isset($_GET['mail'])&&  preg_match("/^[\w\.-]+@[\w\.-]+\.[a-z]{2,3}$/i",
> $_GET['mail'])

> est ce suffisant ?

    Et pour les adresses en .museum ça donne quoi ?

--

                                 Nous vivons dans un monde étrange/
                                 http://foo.bar.quux.over-blog.com/


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Eric Stern  
View profile   Translate to Translated (View Original)
 More options Jan 27, 10:42 am
Newsgroups: fr.comp.lang.php
From: "Eric Stern" <x...@coulommiers.org>
Date: Fri, 27 Jan 2012 16:42:34 +0100
Local: Fri, Jan 27 2012 10:42 am
Subject: Re: perte de caractere @ dans un get

"Tonton Th" <t...@la.bas.invalid> a écrit dans le message de news:
4f22bd60$0$26323$426a3...@news.free.fr...

> On 01/27/2012 01:11 PM, Eric Stern wrote:

>> if (isset($_GET['mail'])&&
>> preg_match("/^[\w\.-]+@[\w\.-]+\.[a-z]{2,3}$/i",
>> $_GET['mail'])

>> est ce suffisant ?

>    Et pour les adresses en .museum ça donne quoi ?

ben ca ne risque pas de marcher .... il faudrait un
"@[\w\.-]+\.[a-z]{2,6}$/i"  je supose ?

Eric


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Olivier Miakinen  
View profile   Translate to Translated (View Original)
 More options Jan 27, 10:41 am
Newsgroups: fr.comp.lang.php
From: Olivier Miakinen <om+n...@miakinen.net>
Date: Fri, 27 Jan 2012 16:41:11 +0100
Local: Fri, Jan 27 2012 10:41 am
Subject: Re: perte de caractere @ dans un get
Le 27/01/2012 13:11, Eric Stern a écrit :

>> Ça ne se produit pas si tu renommes le paramètre en autre chose que
>> 'mail' ?

> je vais essayer.... comme c'est tombé en panne du jour au lendemain, je
> pense aussi à une protection quelconque.

Ok. Je n'ai pas demandé, mais c'est bien $_GET['mail'] lui-même qui est
vide, et pas le résultat d'un traitement fait sur cette valeur ?

> [...] j'ai supprimé la vérification pour être certain que ce n'était pas la
> cause pendant les tests.

Ok.

> normallement, ya ça

> if (isset($_GET['mail']) && preg_match("/^[\w\.-]+@[\w\.-]+\.[a-z]{2,3}$/i",
> $_GET['mail'])

> est ce suffisant ?

Là, pour le coup, c'est trop restrictif : cela interdit par exemple
mon adresse om+n...@miakinen.net qui est valide. Voir la FAQ du forum
à <http://faqfclphp.free.fr/#rub5.3> pour de meilleurs tests.

Par exemple le dernier :
   preg_match('/^[.A-Za-z0-9+_-]+@[.A-Za-z0-9-]+$/', $_GET['mail'])

>> ARRRRGHHH !!!
>>> mail($TO2, $subject, $message, $h);

>> [...]

> Pas de panique, cette partie (l'envoi de courriel) n'y est plus depuis que
> ça ne marche plus...
> Evidemment,en relisant, je comprends le ARRRRGHHH !!!
> je suppose que votre grande crainte est que le vilain pas beau soit maître
> de $message ?

Le vilain pas beau n'a pas besoin de maîtriser $message pour envoyer
ce qu'il veut à qui il veut -- du moins c'était vrai dans certaines
versions de la fonction mail(), mais je crois que les sauts de lignes
sont maintenant filtrés.

Dans certaines versions de PHP, il suffisait de mettre dans $TO2 un truc
du genre :
 "a...@example.com, a...@example.com, ..., adr1...@example.com\n
 Subject: mon joli spam\n
 Content-Type: multipart/alternative; boundary=truc\n
 \n
 --truc
 Content-Type: text/html\n
 \n
 Achetez mes jolis produits !\n
 \n
 --truc--\n"

Avec ce seul paramètre, on peut choisir à la fois la liste des 1000
spammés, le sujet du spam, et son contenu.

> mon seul boulot a été de tracer pourquoi ça ne marchait plus.
> en virant tout les tests, (celle dont vous parliez contre le SQL INJECTION
> et celle qui renvoie à merci), ça m'a permis de voir la disparition du @ dans
> la base.

Il vaudrait mieux faire un « echo $_GET['mail']; » et voir le code
source du HTML généré (ou mieux, l'envoyer comme text/plain par un
header() en début de script).

Cordialement,
--
Olivier Miakinen


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Eric Stern  
View profile   Translate to Translated (View Original)
 More options Jan 27, 12:35 pm
Newsgroups: fr.comp.lang.php
From: "Eric Stern" <x...@coulommiers.org>
Date: Fri, 27 Jan 2012 18:35:18 +0100
Local: Fri, Jan 27 2012 12:35 pm
Subject: Re: perte de caractere @ dans un get

"Olivier Miakinen" <om+n...@miakinen.net> a écrit dans le message de news:
jfugk5$1p7...@cabale.usenet-fr.net...

> Ok. Je n'ai pas demandé, mais c'est bien $_GET['mail'] lui-même qui est
> vide, et pas le résultat d'un traitement fait sur cette valeur ?

Le caractere @ est suprimé de $_GET['mail'],pas dans dans traitement suivant
ie:
 x...@coulommiers.org devient xdv5coulommiers.org.
j'en saurais plus ce weekend avec le test proposé de changer 'mail' par
autre chose. et de faire la manip proposé a la fin.

> [....] Par exemple le dernier :
>   preg_match('/^[.A-Za-z0-9+_-]+@[.A-Za-z0-9-]+$/', $_GET['mail'])

Ok

> [...]Le vilain pas beau n'a pas besoin de maîtriser $message >

C'est un métier ;) je pense qu'il vaut mieux limiter la longueur possible de
la chaine ?
le concepteur initial si je decode bien ce que ça fait a permis 150
caractéres ....

<form action="<?php bloginfo('wpurl'); ?>/content/bulletin" method="get"
name="maildata"><input name="mail" type="text" size="15" maxlength="150"
/><input name="ok" type="submit" value="ok" /></form>

> Il vaudrait mieux faire un « echo $_GET['mail']; » et voir le code
> source du HTML généré (ou mieux, l'envoyer comme text/plain par un
> header() en début de script).

Idée noté

Je reviens Dimanche avec le resultat de mes investigations

Merci pour le temps passé

Eric


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Tonton Th  
View profile   Translate to Translated (View Original)
 More options Jan 27, 12:56 pm
Newsgroups: fr.comp.lang.php
From: Tonton Th <t...@la.bas.invalid>
Date: Fri, 27 Jan 2012 18:56:20 +0100
Local: Fri, Jan 27 2012 12:56 pm
Subject: Re: perte de caractere @ dans un get
On 01/27/2012 06:35 PM, Eric Stern wrote:

> <form action="<?php bloginfo('wpurl'); ?>/content/bulletin" method="get"
> name="maildata"><input name="mail" type="text" size="15" maxlength="150"
> /><input name="ok" type="submit" value="ok" /></form>

    Ne _jamais_ faire confiance au navigateur pour ce genre de limitation
    sur la taille maximale d'une chaine de caractères.

--

                                 Nous vivons dans un monde étrange/
                                 http://foo.bar.quux.over-blog.com/


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
Fred  
View profile   Translate to Translated (View Original)
 More options Feb 2, 12:09 pm
Newsgroups: fr.comp.lang.php
From: Fred <fr-i...@numericable.fr>
Date: Thu, 02 Feb 2012 18:09:12 +0100
Local: Thurs, Feb 2 2012 12:09 pm
Subject: Re: perte de caractere @ dans un get
Le 27/01/2012 16:41, Olivier Miakinen a écrit :

>> if (isset($_GET['mail'])&&  preg_match("/^[\w\.-]+@[\w\.-]+\.[a-z]{2,3}$/i",
>> $_GET['mail'])

>> est ce suffisant ?

> Là, pour le coup, c'est trop restrictif : cela interdit par exemple
> mon adresse om+n...@miakinen.net qui est valide. Voir la FAQ du forum
> à<http://faqfclphp.free.fr/#rub5.3>  pour de meilleurs tests.

Bonjour

Il y a maintenant des filtre adaptés depuis php 5.2

$email = filter_input(INPUT_GET, 'mail', FILTER_VALIDATE_EMAIL);
if($email ){
       $explemail=explode( '@', $email);
    if( checkdnsrr( $explemail[1]) ){
         .......
        .......
        }

}

Toutefois, pour fonctionner aussi en réseau local,
FILTER_VALIDATE_EMAIL autorise tout nom de domaine.
Il faut l'associer à checkdnsrr pour verifie l'existance du domaine.

Par ailleurs, une faille à été détectée et corrigée avec la v 5.2.9

Fred


 
You must Sign in before you can post messages.
To post a message you must first join this group.
Please update your nickname on the subscription settings page before posting.
You do not have the permission required to post.
End of messages
« Back to Discussions « Newer topic     Older topic »