Créer un formulaire usurpé est presque aussi simple que falsifier une URL. Après tout, la soumission d'un formulaire n'est qu'une requête HTTP effectuée par le navigateur. Une partie du format de la demande dépend du formulaire et certaines des données de la demande proviennent de l'utilisateur.
La plupart des formulaires utilisent une adresse URL relative pour spécifier l'attribut d'action :
<form action="process.php" method="POST">
Lorsque le formulaire est soumis, le navigateur demande l'URL spécifiée dans l'action et utilise l'adresse URL actuelle pour localiser l'URL relative. Par exemple, si le formulaire précédent a été généré en réponse à une requête //m.sbmmt.com/, l'adresse URL //m.sbmmt.com/ sera demandée après que l'utilisateur aura soumis le formulaire.
Sachant cela, il est facile de penser que l'on peut préciser une adresse absolue pour que le formulaire puisse être placé n'importe où :
<form action="http://example.org/path/to/process.php" method="POST">
Ce formulaire peut être placé n'importe où et les soumissions produites à l'aide de ce formulaire sont les mêmes que celles produites par le formulaire original. Conscient de cela, un attaquant peut visualiser le fichier source de la page et l'enregistrer sur son serveur tout en modifiant l'action en une adresse URL absolue. En utilisant ces méthodes, un attaquant peut arbitrairement modifier le formulaire, par exemple en supprimant la limite de longueur maximale du champ, en supprimant le code de validation local, en modifiant la valeur d'un champ masqué ou en réécrivant le type d'élément à des fins plus flexibles. Ces modifications aident un attaquant à soumettre des données au serveur, et comme le processus est si simple et facile, l'attaquant n'a pas besoin d'être un expert pour le faire.
Les attaques par formulaire usurpé ne peuvent pas être évitées, et même si cela peut paraître un peu étrange, c'est en réalité vrai. Mais vous n'avez pas à vous inquiéter à ce sujet. Une fois que vous avez filtré correctement les entrées, les utilisateurs doivent suivre vos règles, quelle que soit la manière dont ils les soumettent.
Si vous expérimentez cette technique, vous remarquerez peut-être que la plupart des navigateurs incluent un message Referer dans l'en-tête HTTP pour identifier l'adresse de la page précédente. Dans cet exemple, la valeur Referer est l'adresse URL du formulaire. Ne vous laissez pas berner et utilisez-le pour faire la différence entre vos soumissions de formulaires et les soumissions de formulaires usurpés. Dans la démonstration de la section suivante, vous pouvez voir que les en-têtes HTTP sont également très faciles à falsifier et que la méthode d'utilisation de Referer pour les déterminer est bien connue.
Ce qui précède est le contenu de la soumission du formulaire PHP de tromperie de sécurité. Pour plus de contenu connexe, veuillez prêter attention au site Web PHP chinois (www. php.cn) !