उपयोगकर्ताओं को आवेदन - php, सुरक्षा के अलावा अन्य अनुरोध सबमिट करने से रोकें

वास्तव में मेरे पास एक लॉगिन फॉर्म है जो जानकारी और आय एकत्र करता है।

अब मैं इस लॉगिन पेज से केवल अनुरोधों का मनोरंजन करना चाहता हूं जो कि मेरे सर्वर से परोसा गया था और कोई अन्य पृष्ठ नहीं जो मेरे पैरामीटर के साथ मेरे यूआरएल को हिट करता है।

अग्रिम में ज्ञान के लिए धन्यवाद।

उत्तर:

उत्तर № 1 के लिए 1

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


जवाब के लिए 0 № 2

शायद बेहतर तरीके हैं, लेकिन ऐसा कुछ काम करना चाहिए

if ($_SERVER["PHP_SELF"] == "mydomain.com") {
// do some stuff
} else {
die "requests from external servers are denied!";
}

सीएसआरएफ शोषण और उन्हें रोकने के बारे में अच्छी व्याख्या के लिए यह लिंक भी देखें: http://en.wikipedia.org/wiki/Cross-site_request_forgery#Prevention


जवाब के लिए 0 № 3

लॉगिन पेज में:

<input type="hidden" name="access" value="granted"/>

पृष्ठ में आपका लॉगिन फॉर्म रीडायरेक्ट करता है

if(isset($_POST)&&($_POST["access"]=="granted")){
session_start();
$_SESSION["access"]="granted"
}

प्रत्येक पृष्ठ पर आप नियंत्रण करना चाहते हैं (लॉगिन को छोड़कर):

if ($_SESSION["access"]!="granted"){
die "Request denied!";
}

जवाब के लिए 0 № 4

आप लॉगिन फॉर्म पेज में किसी प्रकार का वन-टाइम टिकट जारी कर सकते हैं और फ़ॉर्म सबमिशन भेजे जाने पर इसे बाद में देख सकते हैं।

एक साधारण उदाहरण में एक झंडा सेट करना होगालॉगिन पेज अनुरोध पर सत्र। बाद में जब फॉर्म सबमिट किया जाता है, तो आप जांचते हैं कि ध्वज सेट है या नहीं। यदि यह सेट है, तो आप प्रसंस्करण की अनुमति देते हैं और इसे अनसेट करते हैं ताकि इसे फिर से उपयोग नहीं किया जा सके।

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


जवाब के लिए 0 № 5

एक त्वरित "एन" गंदा समाधान प्रत्येक फॉर्म जमा करने के लिए है।

जब आप फॉर्म के साथ पेज दिखाते हैं, तो आप डेटाबेस तालिका में एक पंक्ति जोड़ते हैं:

submission_id | token | expire |

फिर पेज में (एक छिपे हुए फ़ील्ड में, या फॉर्म की कार्रवाई में) submit_id डाल दें।

जब आप फॉर्म की पोस्ट प्राप्त करते हैं, तो आप आवश्यक सभी चेक कर सकते हैं (सामान्य हैं: प्रत्येक सबमिट_आईडी के लिए केवल 1 सबमिट करें, समय समाप्त हो जाएं)


संबंधित सवाल
सबसे लोकप्रिय