2011-12-08 8 views
8

हम अपने ऐप में एक वेब सेवा का उपयोग करना चाहते हैं, जिसे स्पष्ट रूप से एक यूआरएल कॉल करने की आवश्यकता है। यह NSURLConnection का उपयोग करते हुए, HTTPS नहीं है, केवल सादा पुराना HTTP है।आईओएस ऐप में "गुप्त" यूआरएल को कॉल करना कितना सुरक्षित है?

समस्या यह है: यह वेब सेवा बहुत महंगी है और हर हज़ार कॉल हमें वास्तविक पैसे खर्च करती है। डर यह है कि कोई यह पता लगा सकता है कि हम कौन सी यूआरएल कॉल करते हैं और फिर इसका दुरुपयोग करते हैं, जिससे लागत में विस्फोट हो जाता है। अगर उस वेब सेवा पर कॉल वैध था तो ट्रैक करने का कोई तरीका नहीं है।

हम इस बात पर आधारित हैं कि हम कितने ऐप बेचते हैं, यह अनुमान लगाकर गुणा किया जाता है कि उस ऐप का औसत प्रति उपयोगकर्ता कितनी बार उपयोग किया जाएगा। हमारे पास कुछ अच्छे आंकड़े हैं जिन पर हम अपनी मान्यताओं का आधार रखते हैं।

क्या यह पता लगाने के तरीके ज्ञात हैं कि जानकारी प्राप्त करने के लिए इंटरनेट पर कौन सा यूआरएल कॉल कर रहा है?

+0

आप जो कर रहे हैं वह मूल रूप से असुरक्षित है। आप इस जानकारी को हमलावर बनाने में सक्षम नहीं होंगे। यह अस्पष्टता के माध्यम से सिर्फ "(इन) सुरक्षा है"। – rook

उत्तर

2

हां, ऐसा करने के कई तरीके हैं। एक उदाहरण के लिए, आईफोन को वाईफाई नेटवर्क पर हुक करें, जिसमें राउटर में पारदर्शी प्रॉक्सी है। प्रॉक्सी के लॉग की जांच करें। आप सभी यूआरएल देखेंगे। निर्भर करता है कि आपके उपयोगकर्ता कितने निर्धारित हैं, लेकिन यह आसान है।

4

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

+0

क्या आप समझ सकते हैं कि "तुच्छ" और "प्रॉक्सी" से आपका क्या मतलब है? क्या यह एक वाईफाई राउटर होता है जो प्रोटोकॉल देता है? यूआरएल अनुरोध में उपयोगकर्ता आईडी द्वारा वेब सेवा "संरक्षित" है। इस तरह वे अपने "ग्राहक" को निर्धारित करते हैं। बेशक कोई भी उस यूआरएल की प्रतिलिपि बना सकता है और इसे हमारी तरफ से ठीक उसी तरह बुला सकता है। – dontWatchMyProfile

+0

निश्चित रूप से। राउटर के साथ चारों ओर घूमने की जरूरत नहीं है। जब भी मैं एक नेटवर्क ऐप डिबग कर रहा हूं, मैं काम कर रहा हूं, मैं अपने भरोसेमंद [http://charlesproxy.com] चार्ल्स सॉफ़्टवेयर प्रॉक्सी को आग लगाता हूं, और अपने डेस्कटॉप के पते को प्रॉक्सी के रूप में उपयोग करने के लिए अपने आईफोन की वाईफाई सेटिंग्स सेट करता हूं। इसके साथ में, मैं अपने फोन द्वारा भेजे गए और प्राप्त किए गए सभी http अनुरोधों की निगरानी कर सकता हूं। मैं अत्यधिक परीक्षण करने के लिए इस तरह के सॉफ़्टवेयर का उपयोग करने का सुझाव दूंगा - आप यह देखने में सक्षम होंगे कि कोई भी आपके नेटवर्क अनुरोधों से क्या प्राप्त कर सकता है। –

12

इस जानकारी को जानने के लिए फ़ोन वाईफ़ाई पर आसानी से नेटवर्क स्नफ़फर का उपयोग कर सकता है। ऐसा लगता है कि यह वास्तव में महत्वपूर्ण है कि आप यूआरएल में किसी प्रकार के सुरक्षित टोकन के साथ एसएसएल का उपयोग करते हैं।

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

+0

+1 ध्यान दें कि एसएसएल अभी भी चार्ल्स जैसे प्रॉक्सी से छीन सकता है यदि आपका प्रोग्राम अंधेरे से प्रमाण पत्र पर भरोसा करता है। इसे जांचना होगा कि प्रमाण पत्र * आप * द्वारा हस्ताक्षरित है, न केवल "कुछ विश्वसनीय हस्ताक्षरकर्ता"। साथ ही, पेलोड निर्धारित करने के लिए अपने प्रोग्राम को इंजीनियर करना हमेशा संभव है, लेकिन एक सत्यापित एसएसएल प्रॉक्सी महत्वपूर्ण रूप से आईओएस पर बार बढ़ाएगी, जिससे आकस्मिक हमलावरों की बजाय अधिकतर प्रेरित हमलावरों को छोड़ दिया जाएगा। –

+1

आप इन बिंदुओं के बारे में सही हैं। सिस्टम की सुरक्षा को आगे बढ़ाने का एक तरीका एसएसएल और सुरक्षा टोकन दोनों का उपयोग करना है और एप्लिकेशन के बाहर एक कारक से प्राप्त टोकन बनाना है, जैसे कि केवल अधिकृत उपयोगकर्ता को ज्ञात पासवर्ड (प्रयोज्य संतुलन के लिए उपयुक्त सुरक्षा माना जाना चाहिए) । ध्यान दें कि टोकन प्राप्त करने के लिए उपयोग किया जाने वाला फ़ंक्शन एक-तरफा होना चाहिए। प्रॉक्सी आपको अनुरोधों को थ्रॉटल या अवरुद्ध करने की अनुमति देकर अतिरिक्त सुरक्षा प्रदान करता है, इस प्रकार व्यय पर ऊपरी सीमा लगाकर एक दुर्भावनापूर्ण उपयोगकर्ता किसी दिए गए समय अंतराल के भीतर सिस्टम स्वामी पर खर्च कर सकता है। –

+1

मुझे अपना अंक यहां प्राप्त करने के लिए कुछ क्षण लगे, लेकिन सहमत हुए। यदि आप किसी उपयोगकर्ता-विशिष्ट जानकारी (जैसे खाते) के लिए "कृपया मुझसे बात करें" टोकन को जोड़ सकते हैं, तो आप दुर्व्यवहार को दृढ़ता से सीमित कर सकते हैं। यदि आप नहीं कर सकते हैं, तो आप आईपी के आधार पर थ्रॉटलिंग द्वारा दुर्व्यवहार को कमजोर कर सकते हैं। –

1

तथ्य की उपेक्षा है कि जो लोग अपने उपकरणों भागने संभवतः आपके आवेदन पर दिखाई दे सकता है, मेरा मानना ​​है कि यह किसी भी अन्य डिवाइस (लैपटॉप, टैबलेट, आदि) अगर किसी को एक WiFi हॉटस्पॉट से अधिक यातायात सूँघने था का उपयोग कर की तरह यातायात की जांच करने के लिए संभव है WireShark जैसे अनुप्रयोग। हालांकि, मुझे संदेह है कि सेलुलर 3 जी नेटवर्क पर इसका अधिक खतरा होगा।

1

अच्छा सवाल।

जैसा कि कई ने कहा है, हाँ, आपके ऐप के अनुरोधों को जानने में आसान है

HTTPS के बारे में ध्यान दें: लेकिन चूंकि आप उपयोग कर रहे HTTPS आप ठीक हैं क्योंकि HTTPS पर डोमेन आईपी पते के लिए छिप जाएगा, और लोगों यूआरएल क्वेरी स्ट्रिंग पैरामीटर नहीं देख सकता। उदाहरण के लिए, यदि आपका यूआरएल https://somewebsite.com?uid=mylogin&pass=mypass था, तो वे निश्चित रूप से "uid = mylogin & पास = माइपास" नहीं देख पाएंगे, और शायद वे केवल आईपी पता देख सकते हैं, डोमेन नाम ही नहीं।(https://serverfault.com/questions/186445/can-an-attacker-sniff-data-in-a-url-over-https देखें)

Sidenote: वे आपके ऐप की समीक्षा जब ग्रहण करने के लिए है कि एप्पल HTTP अनुरोध निदान किसी प्रकार का प्रदर्शन करती सुरक्षित हो सकता है - जो मतलब है, क्योंकि यह उनके हित में है कोशिश करते हैं और यह पता लगाने की क्या आपका ऐप कई कोणों से करता है।

3

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

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