2015-04-21 8 views
7

से http अनुरोधों को सत्यापित करें मैं अपने वेबप्लिकेशंस के लिए क्लाइंट लिख रहा हूं, और मैंने अपने डेवलपर प्रमाणपत्र के साथ रिलीज जार पर हस्ताक्षर किए हैं, मैं अपने हस्ताक्षर किए गए जार से सेवा को आराम देने के अनुरोध को कैसे सत्यापित कर सकता हूं?हस्ताक्षरित जार

+13

आप नहीं कर सकते। आपके हस्ताक्षरित जार रखने वाला कोई भी व्यक्ति इसे अलग कर सकता है और इसलिए, नकली ऐसे अनुरोधों को कैसे पता लगा सकता है। आप स्थैतिक या गतिशील obfuscation द्वारा इसे और अधिक कठिन बना सकते हैं, लेकिन यह केवल बाधा उठाता है। यदि दूसरी तरफ आप अपने जार तक पहुंच के बिना हमलावरों के खिलाफ बचाव करने की कोशिश करते हैं, तो जार में बाकी सेवा अनुरोधों पर हस्ताक्षर करने के लिए उपयोग करने के लिए एक निजी कुंजी शामिल हो सकती है। – mkl

+3

अंतर्निहित समस्या क्या है जिसे आप हल करने का प्रयास कर रहे हैं? यदि आप अपना प्रश्न उसमें शामिल करने के लिए संपादित करते हैं, तो हम वैकल्पिक समाधान का सुझाव दे सकते हैं। – merlin2011

+6

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

उत्तर

6

आप नहीं कर सकते। हस्ताक्षर निष्पादन सत्यापन के लिए है जिसका अर्थ है कि यह सर्वर की तरफ है। लेकिन आप क्लाइंट साइड पर http/rest अनुरोध पर हस्ताक्षर की जांच करना चाहते हैं। ग्राहक पक्ष में ऐसी कोई मान्यता नहीं है।

आप प्रतिक्रिया में कुछ जोड़ सकते हैं और इसे क्लाइंट साइड पर मान्य कर सकते हैं, फिर भी, कुछ भी अन्य सर्वर को एक ही मूल्य भेजने से रोकता है और इसलिए आपका सर्वर होने का नाटक करता है।

आप अपने जार (जैसे सत्र कुकीज़) में कुछ व्यवहार विशेषताओं को भी जोड़ सकते हैं, लेकिन फिर, कुछ भी अन्य जार इसे अनुकरण करने से रोकता है।

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