2016-04-18 6 views
0

J'ai un formulaire et j'ai besoin de vérifier si le $_SERVER['HTTP_REFERER'] est complété, si oui, passez le HTTP_REFERER après soumettre dans la base de données. Le problème est que lorsque vous soumettez le formulaire $_SERVER['HTTP_REFERER'] = l'emplacement où le formulaire est hébergé, j'ai besoin de l'HTTP_REFERER d'où l'utilisateur vient au formulaire. Je essayé ceci:Vérifiez le HTTP_REFERER si est défini puis transmettez l'information

if(!isset($_SESSION['REFERER'])){ 
    $_SESSION['REFERER'] = $_SERVER['HTTP_REFERER']; 
} 

Mais le $_SESSION['REFERER'] sera l'endroit où le formulaire est hébergé.

+0

'' verify' et HTTP Referrer' ne peut pas se entendre. Si vous utilisez le mode de confidentialité avec le navigateur, le référent peut être supprimé. Vous aurez des demandes légitimes sans référent. – DanFromGermany

+1

Avez-vous écrit session_start() en haut de la page sur laquelle vous avez défini la session? Si pas la session ne fonctionnera pas. – merdincz

+0

J'ai 'session_start()' –

Répondre

0

Vous pouvez faire quelque chose le long de ces lignes sur votre formulaire:

<input type="hidden" name="referrer" value="<?= htmlspecialchars($_SERVER['HTTP_REFERER']) ?>"> 

De cette façon, l'utilisateur peut vous poster ces données. Je suppose que vous avez l'intention de retourner ce que l'utilisateur à la page qu'ils visitaient après qu'ils ouvrent une session, juste porter deux choses à l'esprit:

  • utilisateurs malveillants peuvent modifier le referrer eux-mêmes, de sorte que vous devez être prudent ce que l'utilisateur envoie pour éviter que votre serveur ne soit attaqué.
  • Les utilisateurs malveillants peuvent manipuler le référent d'autres personnes.

Vous devez vérifier que votre référant est une URL, et vous devez vérifier que sa source est dans votre propre domaine.

Ensuite, vous pouvez tout simplement lire les données de votre formulaire avec

<?php $originalreferrer = $_POST['referrer']? $_POST['referrer'] : 'default_value'; 
+0

Je ne peux pas utiliser caché parce qu'il peut être modifié et n'est pas pour un login. Je dois utiliser la session pour stocker cette information mais il semble que je ne peux pas stocker le referrer quand l'utilisateur vient au formulaire –

+0

Votre exemple introduit la vulnérabilité XSS – DanFromGermany

+0

@DanFromGermany C'est pourquoi j'ai indiqué que ce n'est pas parfait, et qu'il avait besoin pour s'assurer que tout a été vérifié et revérifié. –