मैं एक बुकमार्कलेट बना रहा हूं ताकि कोई उपयोगकर्ता किसी भी पेज से सीओआरएस का उपयोग करके मेरे सर्वर पर डोमेन पोस्ट पार कर सके। पोस्टिंग से पहले उपयोगकर्ता को प्रमाणित करना होगा और कुकीज़ का उपयोग किया जाता है। क्या किसी दुर्भावनापूर्ण वेबसाइट को उपयोगकर्ता के क्रेडेंशियल का उपयोग करके अपने सर्वर पर क्रॉस डोमेन पोस्ट करने के लिए अपने वेबपृष्ठ में जावास्क्रिप्ट कोड को इम्बेड करने से रोकने का कोई तरीका है?सीओआरएस का उपयोग करते समय सीएसआरएफ को रोकना?
5
A
उत्तर
1
सिद्धांत रूप में, इसके लिए एक समाधान हो सकता है।
- प्रत्येक उपयोगकर्ता के बुकमार्कलेट में एक अद्वितीय सीएसआरएफ टोकन एम्बेड करें।
- किसी अज्ञात फ़ंक्शन में बुकमार्कलेट में कोड लपेटें, इसलिए पृष्ठ तक इसकी पहुंच नहीं होगी।
- अपने बुकमार्कलेट में a strong hash function एम्बेड करें। इसे पूरी तरह से बुकमार्कलेट कोड के भीतर रखा जाना चाहिए, यह सुनिश्चित करने के लिए कि इसे छेड़छाड़ नहीं किया जा सके।
- अपने XMLHttpRequest में, आप भेजें:
- संदेश
- के हैश:
- संदेश
- आपका CSRF टोकन
- एक अनूठा, लंबे समय से नमक
- एक UserID
- एक टाइमस्टैम्प (बस यह सुनिश्चित करने के लिए कि संदेश अब भेजा गया था और दूसरी बार नहीं)
- नमक
- टाइमस्टैम्प
- उपयोगकर्ता ID
- अपने सर्वर पर, आप को मान्य: टाइमस्टैम्प अनुमति त्रुटि मार्जिन (जो आवश्यक है के भीतर है
- ऐसा इसलिए है क्योंकि किसी उपयोगकर्ता के कंप्यूटर घड़ी बंद हो सकती है)
- कि हैश सही है
- यदि सब कुछ सही है, तो आप संदेश पोस्ट कर सकते हैं।
इस अवधारणा के साथ एक दोष है: अगर एक वेबसाइट बुकमार्कलेट (जैसे Array()
के रूप में) द्वारा इस्तेमाल किया कार्यों से किसी के साथ छेड़खानी, दुर्भावनापूर्ण वेबसाइट पर अभी भी, अवरोधन कॉपी और/या संदेश संशोधित करने में सक्षम हो सकता है , यूजर आईडी या सीएसआरएफ टोकन।
संबंधित मुद्दे
- 1. Emacs से लेटेक्स संकलित करते समय टेक्स-खोल को रोकना
- 2. विम संक्षेपों का उपयोग करते समय पिछली सफेद जगह को रोकना
- 3. सीओआरएस
- 4. सीओआरएस
- 5. सिंटेक्स त्रुटि का उपयोग करते समय HTML.html का उपयोग करते समय HTML तत्व को स्क्रिप्ट तत्व
- 6. का उपयोग करते समय @require_POST
- 7. "चेतावनी: सीएसआरएफ टोकन प्रामाणिकता को सत्यापित नहीं कर सकता" त्रुटि - देवताओं के साथ सीओआरएस और: टोकन_authenticatable
- 8. बड़ी फ़ाइलों को पोस्ट करते समय जर्सी क्लाइंट को आउटफमेमरी त्रुटि उत्पन्न करने से रोकना
- 9. सूची का उपयोग करते समय अजीब अपवाद
- 10. क्या स्व-हस्ताक्षरित प्रमाणपत्रों का उपयोग करते समय मैन-इन-द-बीच हमले को रोकना संभव है?
- 11. alassests का उपयोग करते समय त्रुटि
- 12. सिग्नलर का उपयोग करते समय, आईआईएस
- 13. सिस्टम स्कोप का उपयोग करते समय NoClassDefFoundError
- 14. XQuery अलग-मूल्यों का उपयोग करते समय()
- 15. "प्रिंट" का उपयोग करते समय अमान्य वाक्यविन्यास?
- 16. java.io.FileNotFoundException RandomAccessFile का उपयोग करते समय फ़ाइल
- 17. web.config ट्रांसफॉर्म का उपयोग करते समय ReplacableToken_?
- 18. Capistrano का उपयोग करते समय तैनात करते समय वर्डप्रेस और प्लगइन्स को अपग्रेड कैसे करें?
- 19. एआरसी का उपयोग करते समय ऑब्जेक्ट्स को शून्य पर सेट करते समय?
- 20. डुप्लिकेट फॉर्म सबमिशन को रोकना
- 21. क्या सीओआरएस त्रुटियों को फंसाना संभव है?
- 22. QThreadPool का उपयोग करते समय QObject :: moveToThread() को कैसे करें?
- 23. CString :: प्रारूप का उपयोग करते समय C6284 को कैसे रोकें?
- 24. कैमरा ऑनपेव्यूफ्रेम को कैमरे का उपयोग करते समय
- 25. पांडा मर्ज का उपयोग करते समय इंडेक्स को कैसे रखें
- 26. सेलेनियम का उपयोग करते समय जावास्क्रिप्ट को कैसे अक्षम करें?
- 27. ViewPager का उपयोग करते समय savedInstanceState को कैसे संभालें?
- 28. फ़ंक्शन को कॉल करते समय डिफ़ॉल्ट मान का उपयोग
- 29. --remote का उपयोग करते समय gvim को कमांड कैसे भेजें?
- 30. सरणी को क्रमबद्ध करते समय XmlAttributeOverrides का उपयोग कैसे करें?
नहीं। शायद आप अपनी वेबसाइट के नियंत्रण में 'iframe' पर पोस्ट करने पर विचार कर सकते हैं, और फिर पोस्ट करने से पहले उपयोगकर्ता की पुष्टि() 'है। या आप प्रत्येक उपयोगकर्ता के बुकमार्कलेट में एक अद्वितीय सीएसआरएफ टोकन एम्बेड कर सकते हैं, और फिर ... रुको, मुझे एक विचार मिल रहा है ... – user2428118