मुझे यकीन नहीं है कि मैं इसे एक बार में हल कर सकता हूं, लेकिन हम आवश्यकतानुसार आगे और आगे जा सकते हैं।
सबसे पहले, मैं जो कुछ सोच रहा हूं उसे दोहराना चाहता हूं और सुनिश्चित कर रहा हूं कि मैं स्पष्ट हूं। आप servlet1 और servlet2 के अनुरोधों को अस्वीकार करना चाहते हैं, अनुरोध में उचित रेफरर नहीं है और यह करता है क्वेरी स्ट्रिंग है? मुझे यकीन नहीं है कि मैं समझता हूं (servlet1 | servlet2) / .+\?.+ क्योंकि ऐसा लगता है कि आपको servlet1 और 2 के तहत फ़ाइल की आवश्यकता है। मुझे लगता है कि आप एक GET के साथ PATH_INFO ("?" से पहले) संयोजन कर रहे हैं क्वेरी स्ट्रिंग ("?" के बाद)। ऐसा लगता है कि PATH_INFO भाग काम करेगा लेकिन जीईटी क्वेरी टेस्ट नहीं होगा। मैंने script1.cgi और script2.cgi का उपयोग करके अपने सर्वर पर एक त्वरित परीक्षण किया और निम्नलिखित नियमों को पूरा करने के लिए काम किया जो आप पूछ रहे हैं। वे स्पष्ट रूप से मेरे पर्यावरण से मेल खाने के लिए थोड़ा संपादित कर रहे हैं:
RewriteCond %{HTTP_REFERER} !^http://(www.)?example.(com|org) [NC]
RewriteCond %{QUERY_STRING} ^.+$
RewriteRule ^(script1|script2)\.cgi - [F]
उपरोक्त सभी गलत-रेफरर अनुरोधों को script1.cgi और script2.cgi पर पकड़ा गया है जो क्वेरी स्ट्रिंग का उपयोग करके डेटा सबमिट करने का प्रयास करते हैं। हालांकि, आप path_info और डेटा पोस्ट करके डेटा भी सबमिट कर सकते हैं। मैंने इस फॉर्म का इस्तेमाल गलत रेफरर के साथ उपयोग की जाने वाली तीन विधियों में से किसी के खिलाफ सुरक्षा के लिए किया था:
RewriteCond %{HTTP_REFERER} !^http://(www.)?example.(com|org) [NC]
RewriteCond %{QUERY_STRING} ^.+$ [OR]
RewriteCond %{REQUEST_METHOD} ^POST$ [OR]
RewriteCond %{PATH_INFO} ^.+$
RewriteRule ^(script1|script2)\.cgi - [F]
उदाहरण के आधार पर आप काम करने की कोशिश कर रहे थे, मुझे लगता है कि यह वही है जो आप चाहते हैं:
RewriteCond %{HTTP_REFERER} !^http://mywebaddress(.cl)?/.* [NC]
RewriteCond %{QUERY_STRING} ^.+$ [OR]
RewriteCond %{REQUEST_METHOD} ^POST$ [OR]
RewriteCond %{PATH_INFO} ^.+$
RewriteRule (servlet1|servlet2)\b - [F]
उम्मीद है कि यह कम से कम आपको अपने लक्ष्य के करीब ले जाएगा। कृपया हमें बताएं कि यह कैसे काम करता है, मुझे आपकी समस्या में रूचि है।
(बीटीडब्लू, मैं मानता हूं कि रेफरर अवरोधन खराब सुरक्षा है, लेकिन मैं यह भी समझता हूं कि रिलायंस बलों को कभी-कभी अपूर्ण और आंशिक समाधान मिलते हैं, जिन्हें आप पहले से ही स्वीकार करते हैं।)