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

Langage PHP Discussion :

Vérification de l'origine de soumission de formulaire


Sujet :

Langage PHP

  1. #1
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2017
    Messages : 337
    Points : 61
    Points
    61
    Par défaut Vérification de l'origine de soumission de formulaire
    Bonjour,
    j'ai un champ tinyMCE dans mon formulaire et souhaiterais bloquer tout enregistrement de JavaScript par les utilisateurs. lls peuvent en effet créer un formulaire pirate sans tinyMCE qui envoie du HTML qui ne sera pas filtré par tinyMCE. Pour cela j'ai déjà interdit le mot script en case insensitive (bloque les <script> et <a href="javascript:"), mais ce n'est pas suffisant, en effet ils peuvent mettre des onmouseover etc. Je souhaiterais donc connaître la liste exhaustive des événements Javascript car toutes les listes que j'ai vues sur le net n'étaient pas complètes. Ou bien existe-t-il un outil tiers existant pour bloquer cela que je ne connais pas ?
    Merci de votre aide
    Bien cordialement

  2. #2
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 641
    Points : 66 666
    Points
    66 666
    Billets dans le blog
    1
    Par défaut
    Et si au lieu d'essayer de blinder ton form, tu tentais plutot de vérifier sur le traitement du form qu'il provient bien uniquement de l'envoi de ton forumlaire ?

  3. #3
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2017
    Messages : 337
    Points : 61
    Points
    61
    Par défaut
    j'ai vu que JSoup existait : https://stackoverflow.com/questions/...in-java-or-jsp
    https://stackoverflow.com/questions/...ript-from-html
    mais c'est du Java, comment l'interfacer simplement en PHP ?
    vous pouvez déplacer ma question dans le forum PHP si besoin

  4. #4
    Rédacteur/Modérateur

    Avatar de SpaceFrog
    Homme Profil pro
    Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Inscrit en
    Mars 2002
    Messages
    39 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 74
    Localisation : Royaume-Uni

    Informations professionnelles :
    Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Bidouilleur SharePoint
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2002
    Messages : 39 641
    Points : 66 666
    Points
    66 666
    Billets dans le blog
    1
    Par défaut
    https://cheatsheetseries.owasp.org/c...eat_Sheet.html
    un peu de lecture

    Tu peux récupérer un clef pour un input hidden en ajax en ayant coté serveur interdit les requêtes ajax hors domaine.
    puis vérifier la clef après submit

  5. #5
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2017
    Messages : 337
    Points : 61
    Points
    61
    Par défaut
    désolé mais je ne comprends rien à ton site mais en lisant entre les lignes je vois qu'il y a un autre risque que j'avais oublié les balises <form>, moi je veux simplement utiliser JSoup en PHP mais comment faire ?

  6. #6
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 793
    Points : 3 064
    Points
    3 064
    Par défaut
    Bonjour

    Citation Envoyé par Sylvain255 Voir le message
    moi je veux simplement utiliser JSoup en PHP mais comment faire ?
    Logiquement, non, tu ne veux pas utiliser un outil X ou Y. Tu as un besoin qui est de protéger ... et si quelqu'un te donne une solution, tu n'as plus besoin de JSoup.

    Quand tu veux sécuriser un formulaire (=garantir que le formulaire que tu vas recevoir provient de ta page); généralement la solution passe par un token. Voici le premier lien que j'ai trouvé sur Ggle http://sdz.tdct.org/sdz/securisation...lles-csrf.html

    L'idée : ton site génère un code aléatoire (un token) au moment de l'affichage de la page. Imaginons "TOTO257". Tu génères un champ "name=token" caché qui va contenir cette valeur. Et quand tu recevras la soumission du formulaire, si le champ token ne contient pas strictement TOTO257 alors il y a un souci et tu refuses la soumission.

    Pour ce qui est du contenu de l'éditeur, je n'ai pas de réponse à te fournir; il faudra chercher la liste des tags qu'il convient de supprimer. Je suppose que TinyMCE prévoit un truc du genre... mais note qu'il te faudrait, dans un monde idéal, ne pas faire confiance uniquement à TinyMCE mais aussi prévoir cette sécurité au niveau de ton serveur PHP. C'est le principe du never trust... Même si ton formulaire est sécurisé avec un token, il faut que ton serveur PHP se prémunise des attaques et, en gros, de refaire le nettoyage du code soumis.

  7. #7
    Membre éclairé
    Homme Profil pro
    Autre
    Inscrit en
    Juillet 2021
    Messages
    364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Autre

    Informations forums :
    Inscription : Juillet 2021
    Messages : 364
    Points : 741
    Points
    741
    Par défaut
    Bonjour,

    A la place de JSoup, tu devrais plutôt te tourner vers un outil similaire en PHP tel que HTML Purifier : https://github.com/ezyang/htmlpurifier

  8. #8
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2017
    Messages : 337
    Points : 61
    Points
    61
    Par défaut
    finalement j'ai réussi, comme j'ai un serveur dédié j'y ai installé java et créé une application en Java utilisant JSoup qui lit un fichier texte HTML et qui recrache un fichier corrigé.
    Ensuite j'ai créé une fonction PHP qui prend une chaîne HTML en entrée, qui l'écrit dans le fichier texte en entrée de mon programme Java et qui recrache le contenu du fichier texte de sortie du programme Java. Je lancele programme Java par la fonction exec de PHP. Enfin le programme Java et ses fichiers texte d'entrée et de sortie sont situés dans un dossier dans lequel j'ai ajouté un .htaccess "deny from all".

  9. #9
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2017
    Messages : 337
    Points : 61
    Points
    61
    Par défaut
    j'ai testé htmlpurifier beaucoup plus efficace et rapide ! merci beaucoup ! je vais essayer de mettre des tokens aussi mais j'ai des dizaines de formulaires alors c'est fastidieux !

  10. #10
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 793
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 793
    Points : 3 064
    Points
    3 064
    Par défaut
    Citation Envoyé par Sylvain255 Voir le message
    mais j'ai des dizaines de formulaires alors c'est fastidieux !
    Adopte une approche réutilisable. Crée un helper p.ex. càd une fonction qui va te pondre le code du formulaire et ajouter le champ token et une autre fonction qui va se charger du contrôle.

    Même si tu n'as qu'un seul formulaire au final, l'ajout de helpers (ou de classes PHP) va rendre ton code plus lisible, maintenable et évolutif (tu pourras remplacer des portions de ton code par d'autres; mieux adaptée dans le futur)

  11. #11
    Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juillet 2017
    Messages
    337
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Vienne (Poitou Charente)

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

    Informations forums :
    Inscription : Juillet 2017
    Messages : 337
    Points : 61
    Points
    61
    Par défaut
    ok merci oui c'est une bonne pratique

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 21/06/2011, 12h09
  2. Réponses: 2
    Dernier message: 05/07/2010, 11h23
  3. Confirm sur une soumission de formulaire
    Par ephemere2 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/04/2006, 08h59
  4. Pb avec une requete en origine source d'un formulaire
    Par Celia1303 dans le forum Access
    Réponses: 1
    Dernier message: 06/01/2006, 11h51
  5. double click pour soumission de formulaires
    Par pram dans le forum XMLRAD
    Réponses: 2
    Dernier message: 16/11/2005, 12h32

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