Dans le développement de PHP, la confirmation de la source de soumission de formulaire est essentielle pour prévenir les demandes de contrefaçon. Les méthodes suivantes peuvent identifier efficacement si la demande de soumission provient de la page attendue et améliorer la sécurité du site Web.
L'en-tête de référence HTTP contient l'URL source où l'utilisateur accède à la page actuelle. En détectant cet en-tête, vous pouvez confirmer si la demande provient du même nom de domaine:
if (isset($_SERVER['HTTP_REFERER']) && strpos($_SERVER['HTTP_REFERER'], 'yourdomain.com') !== false) {
// Demande du même nom de domaine
}
Les données du post contient des informations sur les soumissions de formulaires. En vérifiant si la valeur d'un champ spécifique (comme un champ caché) répond aux attentes, vous pouvez vérifier la source de la demande:
if (isset($_POST['nonce']) && $_POST['nonce'] === 'expected_nonce') {
// Demande du formulaire attendu
}
Un jeton CSRF est une chaîne générée de manière aléatoire dans chaque session. Il peut être soumis en tant que champ caché dans le formulaire et comparé au jeton de la session:
// Stocker dans une session CSRF Jeton
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
// Inclure des champs cachés dans la forme
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>">
// Vérifier soumisJeton
if (isset($_POST['csrf_token']) && $_POST['csrf_token'] === $_SESSION['csrf_token']) {
// Demande du formulaire attendu
}
Le sel est une chaîne aléatoire qui est ajoutée aux données engagées et hachée pour empêcher la contrefaçon de données:
// Générer du sel
$salt = bin2hex(random_bytes(32));
// Ajouter du sel aux données
$data = 'some_data' . $salt;
// Données de hachage
$hash = hash('sha256', $data);
// Vérifier soumis hash
if (isset($_POST['hash']) && $_POST['hash'] === $hash) {
// Demande du formulaire attendu
}
Grâce à une ou plusieurs des méthodes ci-dessus, les développeurs peuvent confirmer efficacement la source de soumissions de formulaires en PHP, empêchant ainsi les demandes de contrefaçon et améliorant la sécurité des applications Web.