2012-03-26 14 views
15

से केवल प्राप्त/पोस्ट अनुरोध स्वीकार करना क्योंकि डेटा आकार इतना छोटा नहीं है कि मेरे वेब ऐप को लोड करने की आवश्यकता है, यह कुछ बार धीमा हो जाता है इसलिए मैंने अनुरोध पर कुछ डेटा लोड करने के लिए कुछ jQuery AJAX फ़ंक्शंस जोड़ने का निर्णय लिया और फिर इसे कैश में सहेजें।स्थानीयहोस्ट

मैं क्या जानना चाहता हूं कि मैं किसी भी GET या POST केवल स्थानीयहोस्ट/उसी सर्वर/उसी आईपी से अनुरोध कैसे सीमित कर सकता हूं ताकि मैं बाहर से किसी भी कॉल से अपने ऐप से बच सकूं?

इसका मतलब है कि मेरे PHP फ़ंक्शन जो डेटा लौटाते हैं, केवल स्थानीयहोस्ट से अनुरोध किए जाने पर डेटा लौटाएंगे।

मेरा वेब ऐप कोडइग्निटर के ढांचे पर चलता है और मेरा वेब सर्वर कॉन्फ़िगरेशन उबंटू पर चल रहा एक लैंप है।

कोई भी विचार?

उत्तर

22

निर्माता में आप इस्तेमाल कर सकते हैं

if ($_SERVER['SERVER_ADDR'] != $_SERVER['REMOTE_ADDR']){ 
    $this->output->set_status_header(400, 'No Remote Access Allowed'); 
    exit; //just for good measure 
} 

लेकिन अगर इस पद्धति नहीं है आप जो खोज रहे हैं .. .htaccess का उपयोग आप के लिए प्राप्त/पोस्ट को नकार के लिए एक विशिष्ट उदाहरण वापस जाने के लिए एक त्वरित गूगल खोज प्रदर्शन कर सकते हैं सब और फिर 127.0.0.1/localhost के लिए अनुमति दें।

+1

को इस तरह धन्यवाद का उपयोग करें, आप एक अपवाद बनाने के लिए चाहते हो सकता है जब $ _SERVER [ 'SERVER_ADDR'] रिटर्न :: 1 – TheRealChx101

+3

ध्यान दें: आप नकली REMOTE_ADDR भी http: // stackoverflow। कॉम/प्रश्न/50 9 2563/कैसे-टू-नकली-सर्वरremote-addr-variable –

10

.htaccess का उपयोग करना शायद सबसे अच्छा तरीका है, केवल आपके स्थानीय पते और 127.0.0.1 से अनुमति दें। मैं petergasser.com पर इस उदाहरण मिल गया है और यह केवल थोड़ा बदल दिया है:

AuthName "bla" 
AuthType Basic 
<Limit GET POST> 
order deny,allow 
deny from all 
allow from 127.0.0.1 
allow from <your-ip-here> 
</Limit> 
+0

यह अजीब है ... मुझे वर्जित हो रहा है, शायद डॉकर के साथ एक समस्या है? अलग आईपी? –

+1

यह तब तक कोई फर्क नहीं पड़ता जब तक कि दोनों अपाचे और अनुरोध करने वाले एप्लिकेशन एक ही मेजबान पर हों। बेशक आपको यह सुनिश्चित करना होगा कि अपाचे प्रश्न में आईपी पते को सुन रहा है। – h00ligan

+0

मेरा मानना ​​है कि डॉकर कुछ अन्य आईपी का उपयोग कर रहा है जैसे कि 172.18.0.3 या कुछ, यह काम नहीं करता है। लेकिन अगर मैं "लैन से" में अपने लैन पते का उपयोग करता हूं, तो यह काम करता है। –

3

एक कुंजी का उपयोग करें (एपीआई कुंजी के बारे में सोच) आपके सर्वर से अनुरोध के साथ भेजने के लिए। फिर अपने सर्वर पर आप उस कुंजी को चेक करते हैं और यदि यह सही है तो आप डेटा वापस कर देते हैं।

+0

माइक या एच 00लिगन के समाधान पर इसका लाभ क्यों होगा? – Alex

+0

अन्य समाधानों पर केवल लाभ नहीं है, जहां आप कहां से आए थे, इस आधार पर आप अलग-अलग डेटा वापस कर देंगे। – slash197

+0

धन्यवाद @ slash197 लेकिन मैं अब ऊपर उल्लिखित समाधानों से चिपकने जा रहा हूं। किसी भी तरह, आपके पास कोई अच्छा लेख है जहां मैं आपके समाधान के बारे में कुछ पढ़ सकता हूं? – Alex

2

मैं @gorelative

if( 
isset($_SERVER['REMOTE_ADDR']) AND ($_SERVER['REMOTE_ADDR'] !== $_SERVER['SERVER_ADDR']) 
){ 
die(' Access Denied, Your IP: ' . $_SERVER['REMOTE_ADDR']); 
} 
संबंधित मुद्दे