PHP में रेफरर निर्धारित करना




http-referer (4)

इसे जांचने का कोई विश्वसनीय तरीका नहीं है। वास्तव में यह कहने के लिए कि यह कहां से आया था, यह वास्तव में ग्राहक के हाथ में है। आप अपनी वेबसाइट के कुछ पृष्ठों पर केवल कुकी या सत्र सूचनाओं का उपयोग करने की कल्पना कर सकते हैं, लेकिन ऐसा करने से आप बुकमार्क के साथ उपयोगकर्ता अनुभव को तोड़ देंगे।

वर्तमान पृष्ठ को कौन सा पृष्ठ भेजा गया है, या जिसे (AJAX के माध्यम से) कहा जाता है, यह निर्धारित करने का सबसे विश्वसनीय और सुरक्षित तरीका क्या है। मैं (कमी की) विश्वसनीयता की वजह से $_SERVER['HTTP_REFERER'] का उपयोग नहीं करना चाहता, और मुझे केवल अपनी साइट पर आने वाले अनुरोधों से आने वाले पृष्ठ की आवश्यकता है।

संपादित करें: मैं यह सत्यापित करना चाहता हूं कि एक ऐसी स्क्रिप्ट जो क्रियाओं की एक श्रृंखला को पूर्ववत करती है उसे मेरी वेबसाइट पर किसी पृष्ठ से बुलाया जा रहा है।


जो मैंने सबसे अच्छा पाया है वह एक सीएसआरएफ टोकन है और इसे लिंक के लिए सत्र में सहेजता है जहां आपको रेफरर को सत्यापित करने की आवश्यकता होती है।

तो यदि आप एक एफबी कॉलबैक उत्पन्न कर रहे हैं तो यह कुछ ऐसा दिखाई देगा:

$token = uniqid(mt_rand(), TRUE);
$_SESSION['token'] = $token;
$url = "http://example.com/index.php?token={$token}";

फिर index.php इस तरह दिखेगा:

if(empty($_GET['token']) || $_GET['token'] !== $_SESSION['token'])
{
    show_404();
} 

//Continue with the rest of code

मुझे सुरक्षित साइटों के बारे में पता है जो इसके सभी सुरक्षित पृष्ठों के लिए इसके बराबर करते हैं।


सभी नकली रेफरर समस्याओं को पढ़ने के बाद हमारे पास केवल एक ही विकल्प शेष है: यानी हम जिस पेज को रेफरर के रूप में ट्रैक करना चाहते हैं उसे सत्र में रखा जाना चाहिए, और अजाक्स के रूप में सत्र में जांच कर कहा जाता है यदि उसके पास रेफरर पेज मान है और अन्यथा कोई कार्य नहीं कर रहा है कार्रवाई।

दूसरी ओर जब वह किसी भी अलग पृष्ठ का अनुरोध करता है तो रेफरर सत्र मान को शून्य पर बना दें।

याद रखें कि सत्र चर केवल इच्छा पृष्ठ अनुरोध पर सेट है।


$_SERVER ['HTTP_REFERER'] का उपयोग करना

पृष्ठ का पता (यदि कोई है) जो उपयोगकर्ता एजेंट को वर्तमान पृष्ठ पर संदर्भित करता है। यह उपयोगकर्ता एजेंट द्वारा निर्धारित है। सभी उपयोगकर्ता एजेंट इसे सेट नहीं करेंगे, और कुछ एक विशेषता के रूप में HTTP_REFERER को संशोधित करने की क्षमता प्रदान करते हैं। संक्षेप में, यह वास्तव में भरोसा नहीं किया जा सकता है।

if (!empty($_SERVER['HTTP_REFERER'])) {
    header("Location: " . $_SERVER['HTTP_REFERER']);
} else {
    header("Location: index.php");
}
exit;




http-referer