मैं एक वेब सेवा का निर्माण कर रहा हूं जो विशेष रूप से JSON को उसके अनुरोध और प्रतिक्रिया सामग्री (यानी, कोई फ़ॉर्म एन्कोडेड पेलोड) के लिए उपयोग नहीं करता है।
यदि निम्नलिखित सत्य हैं, तो क्या CSRF हमले के लिए एक वेब सेवा असुरक्षित है?
POST
शीर्ष-स्तरीय JSON ऑब्जेक्ट के बिना कोई भी अनुरोध, जैसे,{"foo":"bar"}
400 के साथ अस्वीकार कर दिया जाएगा। उदाहरण के लिए,POST
सामग्री के साथ एक अनुरोध42
इस प्रकार अस्वीकार कर दिया जाएगा।POST
सामग्री-प्रकार के अलावा किसी भी अनुरोध कोapplication/json
400 के साथ अस्वीकार कर दिया जाएगा। उदाहरण के लिए,POST
सामग्री-प्रकार के साथ एक अनुरोधapplication/x-www-form-urlencoded
इस प्रकार अस्वीकार कर दिया जाएगा।सभी GET अनुरोध सुरक्षित होंगे , और इस प्रकार किसी भी सर्वर-साइड डेटा को संशोधित नहीं किया जाएगा ।
ग्राहकों को एक सत्र कुकी के माध्यम से प्रमाणित किया जाता है, जो JSON डेटा के साथ POST के माध्यम से एक सही उपयोगकर्ता नाम / पासवर्ड जोड़ी प्रदान करने के बाद वेब सेवा उन्हें देती है, जैसे
{"username":"user@example.com", "password":"my password"}
।
अनुषंगी प्रश्न: क्या PUT
और DELETE
अनुरोध कभी सीएसआरएफ के लिए असुरक्षित हैं? मैं पूछता हूं क्योंकि ऐसा लगता है कि अधिकांश (सभी?) ब्राउज़र एचटीएमएल रूपों में इन विधियों को अस्वीकार करते हैं।
संपादित करें: जोड़ा गया आइटम # 4।
संपादित करें: अब तक बहुत सारी अच्छी टिप्पणियां और उत्तर, लेकिन किसी ने भी एक विशिष्ट सीएसआरएफ हमले की पेशकश नहीं की है, जो इस वेब सेवा के लिए असुरक्षित है।