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 :

Attaque croisée en php


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Par défaut Attaque croisée en php
    Bonjour,

    je me pose une question.
    J'ai un site développé en php couplé avec Mysql.
    Ce site propose de la saisie d'information via des formulaires en POST.
    Les valeurs postées sont récupérées dans un fichier php qui se charge de mettre les infos en base.

    Ma question est la suivante :
    Est ce que si quelqu'un reproduit mon formulaire sur un autre domaine en utilisant ma page php il peut injecter des données dans ma base.

    Si oui, existe t'il un moyen de savoir si le formulaire posté provient bien du domaine courant ?

    Merci

  2. #2
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 368
    Billets dans le blog
    17
    Par défaut
    Si oui, existe t'il un moyen de savoir si le formulaire posté provient bien du domaine courant ?
    $_SERVER['HTTP_REFERER'] te donne la page précédente, tu peux vérifier si elle correspond à la page censée soumettre le form.
    C'est un début mais c'est facilement contournable car ce n'est qu'une en-tête HTTP renseignée par le client.

    Donne-nous plus d'infos sur ce que tu veux faire précisément et dans quel contexte.

  3. #3
    Membre Expert
    Avatar de transgohan
    Homme Profil pro
    Développeur Temps réel Embarqué
    Inscrit en
    Janvier 2011
    Messages
    3 149
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Temps réel Embarqué

    Informations forums :
    Inscription : Janvier 2011
    Messages : 3 149
    Par défaut
    Et surtout que la moitié des navigateurs ne renseignent pas cette entête. :/

  4. #4
    Membre confirmé Avatar de Fredo02
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    146
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 146
    Par défaut
    Autre solution ?
    Il doit surement y'en avoir... c'est une faille béante pour toutes les applications sinon..

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par Fredo02 Voir le message
    Autre solution ?
    Il doit surement y'en avoir... c'est une faille béante pour toutes les applications sinon..
    utilise un captcha, ou une identification

  6. #6
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 368
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par Fredo02 Voir le message
    Autre solution ?
    Quel est le problème précisément ?

    Il doit surement y'en avoir... c'est une faille béante pour toutes les applications sinon..
    Certains forums empêchent de poster un nouveau message trop rapidement.
    Certains sites utilisent des captcha pour s'assurer qu'il y a bien qqu'un et pas un robot-floodeur derrière la requête.

  7. #7
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 368
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 368
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par transgohan Voir le message
    Et surtout que la moitié des navigateurs ne renseignent pas cette entête. :/
    Je viens de tester avec Firefox, Chrome et IE, ça passe sous XP.

  8. #8
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Le problème du referer c'est que le mec qui prend le temps d'attaquer tes scripts à distance prendra soin de remplir les entête http de manière adéquate , donc tu ne peux pas te reposer la dessus.

    La sécurité la plus simple et très certainement la plus efficace reste de mettre en place un token (jeton en bon français).

    Pour schématiser :

    - Ton formulaire génère un jeton unique (chaine de caractère aléatoire par exemple). Ce jeton est stocké en session et dans un input hidden.

    - Au moment de la soumission du formulaire le token est donc envoyé avec ton formulaire (et fait donc partie des prérequis à la validation des données)

    - Sur ton script de réception des données tu compare simplement le token reçu et le token en session ainsi que son TTL (histoire de pas avoir des token illimité dans le temps). Comme il est unique si il ne correspond pas c'est que les données reçue ne proviennent pas du formulaire qui à généré le token.

    Un petit exemple simple : http://blog.oroger.fr/2009/07/31/se-...s-csrf-en-php/
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  9. #9
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par grunk Voir le message
    Le problème du referer c'est que le mec qui prend le temps d'attaquer tes scripts à distance prendra soin de remplir les entête http de manière adéquate , donc tu ne peux pas te reposer la dessus.

    La sécurité la plus simple et très certainement la plus efficace reste de mettre en place un token (jeton en bon français).

    Pour schématiser :

    - Ton formulaire génère un jeton unique (chaine de caractère aléatoire par exemple). Ce jeton est stocké en session et dans un input hidden.

    - Au moment de la soumission du formulaire le token est donc envoyé avec ton formulaire (et fait donc partie des prérequis à la validation des données)

    - Sur ton script de réception des données tu compare simplement le token reçu et le token en session ainsi que son TTL (histoire de pas avoir des token illimité dans le temps). Comme il est unique si il ne correspond pas c'est que les données reçue ne proviennent pas du formulaire qui à généré le token.

    Un petit exemple simple : http://blog.oroger.fr/2009/07/31/se-...s-csrf-en-php/
    tu peux bypass le token via cURL puisque qu'il aura une session, les tokens servent surtout pour être sur que c'est le même utilisateur qui soumet la requête

Discussions similaires

  1. Attaquer une base X3 en PHP
    Par Therambok dans le forum SAGE
    Réponses: 1
    Dernier message: 12/04/2011, 12h30
  2. [Web Service][SOAP] Comment attaquer facilement un service web en PHP ?
    Par lr dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 29/02/2008, 16h29
  3. [MySQL] Conseils pour attaquer PHP et Bdd MySQL
    Par sambzh24 dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 13/06/2007, 11h58
  4. [ODBC] Afficher une requête croisée dynamique dans une page PHP
    Par resterzen dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 25/08/2006, 17h24
  5. Attaquer Interbase/Firebird en PHP
    Par jflebegue dans le forum InterBase
    Réponses: 6
    Dernier message: 13/08/2004, 17h21

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