हमारे पास एक ऐसी वेबसाइट है जो एमवीसी 3 और एक कस्टम प्रमाणीकरण विधि का उपयोग करती है जो कि फॉर्म प्रमाणीकरण पर निर्भर नहीं है - कम से कम मैं जो कह सकता हूं उससे। web.config में हमएंटीफॉर्गेरी फॉर्म फॉर्म प्रमाणीकरण के बिना टोकन
<authentication mode="None"></authentication>
की स्थापना की और हम का उपयोग कभी नहीं/कोड में कहीं भी HttpContext.User निर्धारित किया है। समस्या यह है @ Html.AntiForgeryToken() का उपयोग करते समय कुछ मामलों में उपयोगकर्ता यह त्रुटि संदेश हो जाता है:
A required anti-forgery token was not supplied or was invalid
हम इस कोड के साथ OnAuthorization में सभी विरोधी जालसाजी चेकों को केंद्रीकृत:
if (String.Compare(filterContext.HttpContext.Request.HttpMethod, "post", true) == 0)
{
var forgery = new ValidateAntiForgeryTokenAttribute();
forgery.OnAuthorization(filterContext);
}
है जहां अपवाद होता है। एप्लिकेशन पूल रीसायकल करते समय नई कुंजी उत्पन्न होने से रोकने के लिए हमारे पास defined a machineKey in web.config है। इससे समस्या ठीक नहीं हुई।
अगला हमने सोचा कि शायद ग्राहक का ब्राउज़र कुकीज़ नहीं भेज रहा है। हमने कुकीज़ लॉगिंग शुरू कर दी और ध्यान दिया कि कुछ मामलों में RequestVerificationToken_Lw कुकी भेजी जाती है, लेकिन अन्य में नहीं है - भले ही अन्य कुकीज़, जैसे कि Google Analytics द्वारा बनाए गए, ठीक ठीक से भेजे जाते हैं। क्या ब्राउज़र में कुछ ऐसा हो सकता है जो कुछ कुकीज़ को अलग कर रहा है और दूसरों को छोड़ रहा है?
यह anti-forgery token depends on forms authentication जैसा लगता है। क्या यह मामला है? एक विश्वसनीय तरीके से फॉर्म प्रमाणीकरण का उपयोग न करने पर एंटीफोर्गेरी टोकन का उपयोग जारी रखने का कोई भी तरीका। ध्यान रखें कि ऊपर वर्णित विधि 90% से अधिक मामलों के लिए काम करती है, लेकिन हम यह नहीं समझ सकते कि यह कुछ लोगों के लिए क्यों काम नहीं करता है।
विचार?
धन्यवाद!
यदि आप किसी भी प्रमाणीकरण का उपयोग नहीं कर रहे हैं तो विरोधी जालसाजी टोकन की परवाह क्यों करें? एक सीएसआरएफ हमले का उद्देश्य एक हमलावर के लिए साइट पर कुछ प्रमाणीकृत उपयोगकर्ता की ओर से कार्रवाई करने के लिए है। और यदि कोई साइट प्रमाणीकरण का उपयोग नहीं करती है तो सीएसआरएफ जानबूझकर लगता है। –
मैं प्रमाणीकरण का उपयोग कर रहा हूं, सिर्फ प्रमाणीकरण नहीं बना रहा हूं। – pbz
आप किस प्रकार का प्रमाणीकरण उपयोग कर रहे हैं? –