पृष्ठभूमि:
मैं एक REST वेब सेवा के लिए प्रमाणीकरण योजना तैयार कर रहा हूं। यह "वास्तव में" सुरक्षित होने की आवश्यकता नहीं है (यह एक व्यक्तिगत परियोजना का अधिक है), लेकिन मैं इसे व्यायाम या सीखने के अनुभव के रूप में संभव बनाना चाहता हूं। मैं एसएसएल का उपयोग नहीं करना चाहता क्योंकि मैं परेशानी नहीं चाहता और ज्यादातर, इसे स्थापित करने का खर्च।
ये SO प्रश्न मुझे शुरू करने के लिए विशेष रूप से उपयोगी थे:
- रेस्टफुल ऑथेंटिकेशन
- REST API / वेब सेवा हासिल करने के लिए सर्वोत्तम अभ्यास
- सबसे अच्छा SOAP / REST / RPC वेब एपीआई के उदाहरण? और आप उन्हें क्यों पसंद करते हैं? और उनका क्या कसूर है?
मैं अमेज़ॅन S3 के प्रमाणीकरण के एक सरलीकृत संस्करण का उपयोग करने के बारे में सोच रहा हूं (मुझे OAuth पसंद है लेकिन यह मेरी आवश्यकताओं के लिए बहुत जटिल लगता है)। मैं फिर से खेलना हमलों को रोकने के लिए, सर्वर द्वारा आपूर्ति की गई एक बेतरतीब ढंग से उत्पन्न गैर- जोड़ रहा हूं ।
प्रश्न करने के लिए:
S3 और OAuth दोनों ही कुछ चयनित हेडर के साथ अनुरोध URL पर हस्ताक्षर करने पर निर्भर हैं। उनमें से कोई भी POST या PUT अनुरोधों के लिए अनुरोध निकाय पर हस्ताक्षर नहीं करता है। क्या यह एक मध्य-आक्रमण के लिए संवेदनशील नहीं है, जो url और हेडर रखता है और हमलावर शरीर को किसी भी डेटा के साथ अनुरोध बॉडी को बदलना चाहता है?
ऐसा लगता है कि मैं हस्ताक्षर किए गए स्ट्रिंग में अनुरोध निकाय के एक हैश को शामिल करके इसके खिलाफ रख सकता हूं। क्या यह सुरक्षित है?