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




http-referer (4)

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

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

$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

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

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

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


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

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

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


रेफरर HTTP प्रोटोकॉल के हिस्से के रूप में क्लाइंट के ब्राउज़र द्वारा भेजा जाता है, और इसलिए वास्तव में अविश्वसनीय है। यह वहां नहीं हो सकता है, यह जाली हो सकती है, अगर आप सुरक्षा कारणों से हैं तो आप इसे भरोसा नहीं कर सकते हैं।

अगर आप यह सत्यापित करना चाहते हैं कि आपकी साइट से कोई अनुरोध आ रहा है, तो आप नहीं कर सकते हैं, लेकिन आप सत्यापित कर सकते हैं कि उपयोगकर्ता आपकी साइट पर है और / या प्रमाणित है। कुकीज AJAX अनुरोधों में भेजे जाते हैं ताकि आप उस पर भरोसा कर सकें।


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

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

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




http-referer