2017-01-19 7 views
9

का उपयोग कर क्रॉस डोमेन से एपीआई कॉल सुरक्षित करना मेरे पास एक बुकिंग साइट है जहां से मैं उपयोगकर्ता को कोड की कुछ पंक्तियां प्रदान करता हूं जहां मैं कोड के साथ div में एपीआई कुंजी जोड़ता हूं। उपयोगकर्ताओं को इन कोडों को अपनी वेबसाइट में जोड़ना होगा। फिर मैं AJAX कॉल का उपयोग करके अपनी साइट पर अपनी साइट पर दृश्य लोड करता हूं। मेरी चिंता यह है कि: कोडइग्निटर का उपयोग करके आराम से वेब सेवाओं के साथ सार्वजनिक और निजी एपीआई कुंजी का उपयोग करके मैं इन कॉल को सुरक्षित कैसे बना सकता हूं?रीस्टफुल सेवा

उपयोगकर्ता के लिए प्रदान की मेरे कोड की तरह

<link rel="stylesheet" type="text/css" href="http://localhost/bookingpoints_com/apiTesting/styles/first.css" /> 
    <script src="http://localhost/bookingpoints_com/contents/scripts/jquery.js" ></script> 
    <script src="http://localhost/bookingpoints_com/contents/scripts/apiused.js" ></script> 
    <script src="http://localhost/bookingpoints_com/apiTesting/scripts/common.js" ></script>   
    <div id="api-data-reserve" name="Njc4ZDI5ZDZiN2RlYzIxMzM1N2U3ZWRkOGEwYjhlNThhZmZiNDNjNXRlc3QgY29kZTE=" data="Njc4ZDI5ZDZiN2RlYzIxMzM1N2U3ZWRkOGEwYjhlNThhZmZiNDNjNW1HVnZ3YVhMRVc=" sitekey="Njc4ZDI5ZDZiN2RlYzIxMzM1N2U3ZWRkOGEwYjhlNThhZmZiNDNjNQ=="></div> 

कोड की इन पंक्तियों के द्वारा मैं अपनी साइट के लिए एक ajax फोन करना और उन साइट पर दृश्य प्रस्तुत करना लग रहा है। शुद्ध API आर्किटेक्चर का उपयोग करके आराम से सेवाओं का उपयोग करके मैं इसे Google के क्लाइंट और गुप्त कुंजी संरचना जैसे प्रमाणीकरण के साथ कैसे काम कर सकता हूं?

+0

http: // stackoverflow।कॉम/प्रश्न/4850702/is-cors-a-secure-way-to-do-cross-domain-ajax-request – channasmcs

+0

यदि आप AJAX अनुरोधों के साथ कोडनिर्देशक और API-keys का उपयोग करना चाहते हैं तो एक शेष API कार्यान्वयन का उपयोग करने पर विचार करें: https://github.com/chriskacerguis/codeigniter-restserver –

+0

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

उत्तर

2

फेसबुक, Google और अन्य बड़ी कंपनियां इस तरह की सेवाओं के लिए iframe का उपयोग करती हैं।
फेसबुक का उदाहरण लें, यह आपको कोड में डालने के लिए स्क्रिप्ट पर देता है, जब रन विशेष दृश्य के लिए आईफ्रेम बनाते हैं।

इसके अलावा आप क्रॉस-साइट AJAX कॉल नहीं कर सकते हैं। केवल आपकी साइट से लोड होने वाली आईफ्रेम पृष्ठ को सुरक्षित रूप से लोड कर सकती है।

अब चाबियों के साथ, आप हमेशा स्क्रिप्ट में सार्वजनिक कुंजी प्रदान कर सकते हैं। Iframe href आपको $_SERVER['http_referer'] के साथ वेबसाइट पर इंगित करेगा जहां आप यह सुनिश्चित कर सकते हैं कि एपीआई कुंजी अधिकृत है। निजी कुंजी का उपयोग न करें जबतक कि आप कोई भी निजी गोपनीय डेटा पोस्ट नहीं कर रहे हैं।

2

उचित शीर्षलेख बनाकर अजाक्स अनुरोधों का अनुकरण किया जा सकता है। आप अगर अनुरोध एक Ajax अनुरोध का उपयोग कर सकते है को देखने के लिए एक बुनियादी जाँच करना चाहते हैं:,

if($_SERVER['HTTP_X_REQUESTED_WITH'] == 'XMLHttpRequest') { //Request identified as ajax request } हालांकि आप इस चेक पर अपने सुरक्षा का आधार कभी नहीं करना चाहिए। यदि आपको वही चाहिए तो यह पृष्ठ पर सीधे पहुंच को समाप्त कर देगा।

लेकिन यह पर्याप्त नहीं है, आपको सर्वर साइड स्क्रिप्टिंग (उदा। PHP) का उपयोग करके अपने अजाक्स कॉल को सुरक्षित करना होगा। उदाहरण के लिए, यदि आपका AJAX PHP फ़ाइल की कुंजी पास करता है, तो यह सुनिश्चित करने के लिए कि यह सही कुंजी है, PHP फ़ाइल में कोड लिखें।

2

मैंने आरईएसटी एपीआई को सुरक्षित करने के लिए कुछ समय पहले एक लेख लिखा था, विशेष रूप से ब्राउज़र द्वारा उपभोग किए गए। मैं https://www.moesif.com/blog/technical/restful-apis/Authorization-on-RESTful-APIs/

Auth0, एक प्रमाणीकरण प्रदाता के पास कुछ संसाधन भी हैं, मुझे उनके उत्पाद से पहले और उनके उपयोग के अलावा कोई संबद्धता नहीं है।

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

आपको क्या चाहिए के आधार पर, कुंजी किसी भी ग्राहक द्वारा पहुंचा जा सकेगा, ताकि आप एक विशिष्ट अनुमतियों मॉडल डिजाइन कुंजी कम से कम विशेषाधिकार का अधिकार (यानी वे, व्यवस्थापक अधिकार नहीं होना चाहिए आदि)

है सुनिश्चित करने के लिए कर सकते हैं
संबंधित मुद्दे