Back to Question Center
0

साम्लाट, किसी भी अनुरोध को वेबसाइट में एक रूप से नहीं आने से इनकार करते हैं

1 answers:

मैं नहीं हूं . htaccess विशेषज्ञ, तो मैं मूल प्रश्न के लिए अपनी क्षमा चाहता हूँ.

एक वेबसाइट में मैं एक फार्म पर काम कर रहा हूं. प्रपत्र का क्रिया यूआरएल वेबसाइट की जड़ में रखा गया एक फ़ाइल है - mikrotik mikrotik ipsec routing.

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

मैंने इस चरम दृष्टिकोण की कोशिश की:

    <फ़ाइलें "_mf. php ">
ऑर्डर की अनुमति दें, अस्वीकार करें
सब से इनकार
    

मैं क्या जानना चाहता हूं कि यदि मैं किसी भी रेफ़रलकर्ता को बाहर कर सकता हूं जो उस पृष्ठ पर नहीं है जहां फ़ॉर्म स्थित है और यदि यह एक अच्छा तरीका है.

February 12, 2018

बस स्पष्ट करने के लिए, इस उदाहरण में पहुंच को प्रतिबंधित करने के लिए कोई पूर्ण प्रमाण नहीं है (जब तक कि यह किसी प्रकार के प्रमाणीकरण के पीछे नहीं है) क्योंकि यह आपके फॉर्म के लिए पहुंच योग्य होने की आवश्यकता है. आप जो भी कर सकते हैं, वह आकस्मिक ब्राउज़िंग को रोका जा सकता है. वास्तव में इस स्क्रिप्ट के लिए अनुरोध सबमिट करना चाहते हैं, जो कोई भी कर सकता है.

  <फ़ाइलें "_mf. php ">
ऑर्डर की अनुमति दें, अस्वीकार करें
सब से इनकार
 

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

  <फ़ाइलें "_mf. php ">ऑर्डर की अनुमति दें, अस्वीकार करेंसब से इनकार
 

कोई भी GET अनुरोध (जैसे. "ब्राउज़र के पता बार से") अवरुद्ध हो जाएगा (403 निषिद्ध). साथ ही साथ किसी भी पुट, डिलीट, कनेक्ट, ऑप्शन आदि. आदि. अनुरोध. लेकिन पोस्ट अनुरोधों को बिना रुकावट के माध्यम से अनुमति दी जाएगी.

यदि आप HTTP रेफेरर को भी जांचना चाहते हैं, तो आप mod_rewrite का सहारा ले सकते हैं. उदाहरण के लिए:

  रीव्रेटइजइन ऑन
RewriteCond% {REQUEST_METHOD}! POST [या]
RewriteCond% {HTTP_REFERER}! ^ Http: // उदाहरण. com /
रीरमिट नियम ^ _ एम एफ \. php - [F] 

जहां उदाहरण. कॉम आपका कैनोनिकल होस्टनाम है. यदि आप चाहें तो संदर्भित पृष्ठ का सटीक यूआरएल (जिस पृष्ठ में आपका फ़ॉर्म है) निर्दिष्ट कर सकते हैं:

  पुनर्लेखन% {HTTP_REFERER}! ^ Http: // उदाहरण. कॉम / path / / करने के लिए फ़ाइल-कि-शामिल फार्म $ 

यह आपके के शीर्ष के पास जाने की आवश्यकता होगी. htaccess फ़ाइल.

यह क्या कहता है सभी अनुरोधों के लिए / _mf. php जो या तो पोस्ट अनुरोध नहीं हैं या HTTP Referer आपका डोमेन नहीं है तो एक 403 निषिद्ध.

ध्यान दें कि यह चेतावनियों के साथ आता है. यह संभव है कि उपयोगकर्ता के ब्राउज़र को HTTP जनसंपर्क भेजने के लिए सेट नहीं किया गया है - आपकी स्क्रिप्ट उन उपयोगकर्ताओं तक पहुंच योग्य नहीं होगी. (यह दुर्लभ है, लेकिन कुछ "शक्ति" उपयोगकर्ता यह करने के लिए चुन सकते हैं. )

कर्ल के साथ कोई भी उपयोगकर्ता पता है-आपके अनुरोध को अभी भी फर्जी कैसे बना सकता है और आपके फ़ॉर्म पर पहुंच के बिना आपकी स्क्रिप्ट पर अनुरोध सबमिट कर सकता है. चूंकि वे एक पोस्ट अनुरोध सबमिट कर सकते हैं और नकली HTTP रेफरर.