|
Publicité ' | ||||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2005 Messages : 118 ![]() |
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
__________________
Microsoft Certified Professional Developer SharePoint 2010 |
|
|
10
|
|
|
#2 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Citation:
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.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
10
|
|
|
#3 |
|
Membre Expert
![]() Baptiste ROUSSELÉtudiant Inscription : janvier 2011 Messages : 802 ![]() |
Et surtout que la moitié des navigateurs ne renseignent pas cette entête. :/
|
|
|
11
|
|
|
#4 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2005 Messages : 118 ![]() |
Autre solution ?
Il doit surement y'en avoir... c'est une faille béante pour toutes les applications sinon..
__________________
Microsoft Certified Professional Developer SharePoint 2010 |
|
|
10
|
|
|
#5 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
utilise un captcha, ou une identification
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#6 | |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Quel est le problème précisément ?
Citation:
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.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
|
10
|
|
|
#7 |
|
Expert Confirmé
![]() Inscription : mars 2005 Messages : 2 823 ![]() |
Je viens de tester avec Firefox, Chrome et IE, ça passe sous XP.
__________________
Un problème exposé clairement est déjà à moitié résolu Keep It Smart and Simple |
|
|
10
|
|
|
#8 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
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/ |
|
11
|
|
|
#9 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
Citation:
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#10 | |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Citation:
Mais dans le cas d'une attaque des formulaire du site directement via cURL y'a pas de solution miracle puisque même l'identification pourra êter bypassée |
|
|
10
|
|
|
#11 | |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
Citation:
en dynamique y'a le captcha (si on parle de bot bien-sur)
__________________
http://blog.stealth35.com/ |
|
|
|
00
|
|
|
#12 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2005 Messages : 118 ![]() |
C'est quand même hallucinant qu'il n'y est aucune solution ultime à ce problème.
Tous les sites sont vulnérables si toutes les solutions peuvent être bypassées. Un expert en sécurité à la rescousse ??
__________________
Microsoft Certified Professional Developer SharePoint 2010 |
|
|
10
|
|
|
#13 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
token + captcha, y'a peu de chance, après faut se mettre dans la tête que la sécurité ultime n'existe pas.
__________________
http://blog.stealth35.com/ |
|
|
00
|
|
|
#14 | |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Citation:
Après comme le dit Stealth35 tu peux limiter les robots en imposant une action humaine. Action qui reste encore une fois pas 100% robuste puisque des robots un peu évolué savent faire de l'OCR sur un captcha. Un captcha + un token + une identification et tu es à peu près sur de pas être embêté. Edit -- Grilled |
|
|
10
|
|
|
#15 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2005 Messages : 118 ![]() |
Imaginons le pirate qui prépare son coup.
Il se fait une petite page avec un include ou une iframe qui pointe vers mon fichier php. Il se prépare une variable de session en allant chercher le name du input contenant la clé. A ce stade tout est prêt. Maintenant il va sur mon formulaire en utilisant mon application, récupère la valeur du token en regardant le code source html. Il se dépêche de retourner sur sa page destinée au hack, met la valeur récupérée en session et injecte des données. Il passe le token et le ttl. Facile
__________________
Microsoft Certified Professional Developer SharePoint 2010 |
|
|
10
|
|
|
#16 | |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Citation:
L'important dans la soumission de formulaire , c'est de s'assurer que la personne qui affiche le formulaire est bien la même que celle qui envoi les données et que les soumission ne se font pas à la chaine par des robots. |
|
|
20
|
|
|
#17 |
![]() ![]() Inscription : septembre 2010 Messages : 7 103 ![]() |
mais oui si y'a pas d'authentification, c'est normal que tout le monde puisse soumettre ton formulaire, et si tout le monde peut le faire je vois pas en quoi c'est un problème de le faire d'un autre site
__________________
http://blog.stealth35.com/ |
|
|
10
|
|
|
#18 |
|
Nouveau Membre du Club
![]() Inscription : juillet 2005 Messages : 118 ![]() |
il y a une authentification sur mon site.
En gros ce que vous semblez dire c'est un truc du genre.. if(isset($_SESSION['IsConnect'])) { Mon Script } else { Dégage sale pirate !!!! } Si je créer une variable de session IsConnect sur un autre site et que je fais un include ou une iframe vers ma page php, adieu le système d'authentification
__________________
Microsoft Certified Professional Developer SharePoint 2010 |
|
|
10
|
|
|
#19 |
|
Expert Confirmé
![]() Olivier Développeur Web Inscription : août 2003 Messages : 1 837 ![]() |
Une session est liée à un domaine. Si tu créer une session sur xxx.com même si tu fait une iframe elle ne sera pas valable sur yyy.org.
Pour une sécurité optimale tu peux même gérer tes session via ta base de données : voir tuto |
|
10
|
|
|
#20 |
|
Membre du Club
![]() Développeur Web Inscription : avril 2011 Messages : 36 ![]() |
Non, la session est propre au serveur.
Donc une session créé sur un serveur a ne sera pas lu par un serveur b. Donc peut importe que la session sur le serveur a ait les mêmes variables que la session sur le serveur b, elle ne vont pas interférer entre elles. |
|
|
10
|
Copyright © 2000-2012 - www.developpez.com