2011-12-03 18 views
32

मैं एक साइट है कि उपयोगकर्ताओं को अपने आंकड़ों की जांच करने की अनुमति (फ़ाइल की संख्या अपलोड किया है, कितने फ़ाइलों वे, कोटा, पहुंच आदि के प्रकार ...)एपीआई सुरक्षा कार्यान्वयन php

मैं पर एक अनुभाग बना मेरी साइट: api.domain.com

यह कर्ल या एक वेब ब्राउज़र के बाद से मैं एक json वस्तु या एक्सएमएल लौट रहा हूँ के माध्यम से पहुंच हो सकता है (उपयोगकर्ता वरीयता के आधार पर)

मेरा प्रश्न यह है: मैं सीमित होना चाहिए उपयोगकर्ता/पास का उपयोग करके एक्सेस या क्या मुझे उपयोगकर्ता फ़ाइल का हैश बनाना चाहिए?

परिदृश्य 1:

उपयोगकर्ता, एक php कर्ल उपयोगकर्ता भेजता है बना सकते हैं और पोस्ट या कर्ल प्रमाणन के माध्यम से गुजरती हैं और परिणाम वापस पाने उसे पार्स आदि ...

उदाहरण के लिए

मेरे लिए यह सुरक्षित है, लेकिन उपयोगकर्ता उसकी स्क्रिप्ट बनाए रखने के लिए अगर वे अपने पास बदलने है

परिदृश्य 2

उपयोगकर्ता पहुँच की तरह एक फ़ाइल: api.domain.com/j355HGssgf3HESAjh45jusf4325GSj5hbsHhdh5HGHFS3732he4548475wbe3447nSNe5XfgjhGJ और फिर डेटा

यह एक का उपयोग, कुछ भी नहीं बनाए रखने के लिए

+0

+1 बहुत अच्छा प्रश्न को प्रभावित नहीं करेगा! –

उत्तर

40

यहाँ इस पर मेरे विचार है।

यदि आप अपने पृष्ठ पर कोई अनुरोध नहीं करते हैं तो एक पृष्ठ नहीं मिला है या एक त्रुटि संदेश (एक अच्छी 200 ओके स्थिति के साथ), तो यह बॉट या संयुक्त राष्ट्र-भरोसेमंद लोगों को एक सुराग भेज सकता है कि वे क्या प्राप्त कर सकते हैं और बार-बार कोशिश करें ...

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

मैं कहेंगे उपयोगकर्ता/कूटशब्द विधि थोड़ा और इस मामले में सुरक्षित है।

अब, आप बस एक बड़ा स्ट्रिंग (परिदृश्य 2 की तरह) में प्रवेश पर भरोसा होता है जब आप अपने मेल की जांच? या आपके बैंक खाते की जानकारी?

37

अगर यह मैं था मैं प्रत्येक खाते के लिए एक अनूठा api कुंजी बनाने की क्षमता देना होगा,

api.domain.com/?key=<API.KEY> 

अधिक सुरक्षा उपाय के लिए आप इसे केवल api कुंजी के साथ पोस्ट विधि के माध्यम से कनेक्शन स्वीकार कर सकता है। अगर get माध्यम से संपर्क तो

एक त्रुटि आदि दिखाने फिर अगर वे अपने पास/उपयोगकर्ता नाम बदल यह उनकी api कुंजी

+0

लेकिन अगर किसी ने आपकी एपीआई कुंजी चुरा ली तो क्या होगा? मैं इस तर्क पर कुछ जानकारी खोज रहा हूं क्योंकि मेरे पास 2 सर्वर हैं और मैं कुछ समझदार जानकारी पोस्ट के माध्यम से काम करना चाहता हूं। लेकिन मैं समझता हूँ कि नहीं, मैं n एक एपीआई का उपयोग ca में जानकारी प्राप्त करने के लिए है, लेकिन अगर किसी को सूंघ कॉल api कुंजी – Kreker

+1

यह संवेदनशील जानकारी है, तो मैं ssl का उपयोग करें और डेटा एन्क्रिप्ट होगा साथ समझदार की जानकारी प्राप्त कर सकते हैं, पर डिक्रिप्ट दूसरा अंत यदि आप जानते हैं कि एक एपीआई कुंजी चोरी हो गई है तो एक नया पुन: उत्पन्न करें :) –

संबंधित मुद्दे