PHPMailer et injections Header

WRInaute accro
Salut

Ca serait juste pour savoir si l'on peut faire confiance à PHPMailer au niveau sécurité? La classe protège t-elle des injections d'headers et de toute autres failles éventuelles (si il en existe d'autres)?

Exemple si j'ai un formulaire contact avec les champs : Nom, email, Sujet, Message
Dois je faire un traitement spécifique sur ces champs pour éviter des injections ou autre? Est-ce la peine de vérifier la présence des sauts de lignes pour les champs email et sujet par exemple?
 
WRInaute accro
C'est ce que j'avais fait :)

J'avais bien vue ceci :

Code:
public function secureHeader($str)
    {
        return trim(str_replace(array("\r", "\n"), '', $str));
    ]

Mais j'ai pas réussi à déterminer si tous les paramètres sensibles transmis passaient bien à la moulinette.
D'autant plus que je trouve cette fonction peut être un peu légère. J'aurais imaginé quelque chose de plus complet (mais peut etre inutile, je sais pas) :

Code:
"\n", "\r", "%0a", "%0A", "%0d", "%0D"....

Donc ceux qui utilisent PHPmailer, faites vous entièrement confiance à cette classe?
 
WRInaute accro
Phpmailer c'est pour l'envoi (ça fait un bail que je n'ai pas utilisé). Ce n'est pas à la classe de faire le contrôle des données issues de formulaires, mais à toi de t'en préoccuper.
 
WRInaute accro
Bah j'imaginais au contraire que pour les protections contre les injections de header par exemple c'était à PHPMailer de le faire. Une aussi grosse classe, si c’est à nous de tout coder je ne vois plus trop l'intérêt :wink:
Je ne parle pas évidemment de vérifier qu'il s'agit bien d'une adresse email dans le champ email. Ou que notre champ nom contient bien x caractères. Mais par exemple pour mon champ "sujet" dois je vérifier qu'il n'y ai pas de retour chariot? Le faites vous?

Avis aux utilisateurs de PHPMailer, faites vous des tests particuliers pour éviter les injections de hearder ou laissez vous faire PHPMailer? :mrgreen:
 
WRInaute accro
Sur un formulaire de contact, je vois mal pourquoi ce serait à une classe chargé des envois de se charger de contrôler ce genre d'aspect. Le contrôle d'intégrité des données, c'est en amont que ça doit être fait (tentative d'injection compris). A la rigueur, si la classe le gère elle-même, c'est bonus.
 
WRInaute accro
Bah je ne suis pas de ton avis notamment pour ce type de "sur" classe spécialisée dans l'envoi de mail et qui doit donc par conséquent traiter les injections (je dirais même que c'est primordial), ce qu'elle semble faire (ou tenter de faire) :

Code:
public function secureHeader($str)
    {
        return trim(str_replace(array("\r", "\n"), '', $str));
    ]

Si ce n'était pas son rôle cette méthode ne serait pas implémentée.
Ma question pour être plus précis était : est-ce que cette méthode est suffisamment sécure :wink:

Je viens de faire des essais en mettant dans le champ sujet des :

Mail%20Injection\nBcc:myemail@emailhost.com
ou
Mail%20Injection%0ABcc:myemail@emailhost.com

ça ne semble posé aucun problème. Donc a priori inutile de tester réellement les injections. Je ne suis pas doué pour simuler des tentatives de hacks :)

PS : merci Baud74, j'avais déjà fait des recherches sur Google, mais je n'étais pas convaincu des réponses obtenues.
 
Discussions similaires
Haut