2009-09-10 18 views
16

एएसपी.नेट एमवीसी 1.0 में, क्रॉस साइट अनुरोध फर्जी सुरक्षा समस्या को संभालने के लिए एक नई सुविधा है:विरोधी जालसाजी टोकन नमक का उपयोग क्या है?

 <%= Html.AntiForgeryToken() %> 
[ValidateAntiForgeryToken] 
public ViewResult SubmitUpdate() 
{ 
    // ... etc 
} 

मुझे एचटीएमएल फॉर्म में जेनरेट किया गया टोकन हर बार एक नया फॉर्म प्रस्तुत करने के दौरान बदलता रहता है।

मैं जानना चाहता हूं कि ये टोकन कैसे उत्पन्न होता है? और जब इस साइट को स्कैन करने के लिए कुछ सॉफ़्टवेयर का उपयोग करें, तो यह एक और सुरक्षा समस्या की रिपोर्ट करेगा: सत्र तय किया गया है। क्यूं कर? चूंकि टोकन बदल गया है, यह समस्या कैसे आ सकती है?

और एक और फ़ंक्शन है, जो antiForgeryToken के लिए "नमक" है, लेकिन मुझे वास्तव में पता है कि इसका उपयोग किसके लिए किया जाता है, यहां तक ​​कि हम टोकन उत्पन्न करने के लिए "नमक" का उपयोग नहीं करते हैं, टोकन हर समय बदल जाएगा , तो ऐसा कार्य क्यों है?

उत्तर

19

AntiForgeryToken यहाँ पर जानकारी के बहुत सारे: http://blog.codeville.net/2008/09/01/prevent-cross-site-request-forgery-csrf-using-aspnet-mvcs-antiforgerytoken-helper/

यह एक क्रॉस साइट रिक्वेस्ट फोर्जरी (CSRF) को रोकने के लिए है। 'सहेजें' पर क्लिक करने के लिए यह एक मानक मानक व्यवहार है और एक सर्वर को कुछ क्रियाएं करें, यानी उपयोगकर्ता के विवरण को सहेज लें। आप कैसे जानते हैं कि फ़ॉर्म सबमिट करने वाला उपयोगकर्ता वह उपयोगकर्ता है जिसका दावा वे करते हैं? ज्यादातर मामलों में आप कुछ कुकी या विंडोज आधारित ऑथ का उपयोग करेंगे।

क्या होगा अगर कोई हमलावर आपको ऐसी साइट पर लुभाता है जो एक छोटे से छिपे हुए IFRAME में बिल्कुल वही रूप प्रस्तुत करता है? आपकी कुकीज़ बरकरार हो जाती है और सर्वर अनुरोध को कानूनी अनुरोध के लिए अलग नहीं देखता है। (जैसा कि जीमेल ने पाया है: http://www.gnucitizen.org/blog/google-gmail-e-mail-hijack-technique/)

विरोधी जालसाजी टोकन प्रत्येक पृष्ठ को उत्पन्न होने पर हर बार अतिरिक्त कुकी टोकन बनाकर हमले के इस रूप को रोकता है। टोकन फॉर्म और कुकी दोनों में है, यदि फॉर्म और कुकी मेल नहीं खाते हैं तो हमारे पास सीएसआरएफ हमला है (क्योंकि हमलावर ऊपर वर्णित हमले का उपयोग करके विरोधी जालसाजी टोकन को पढ़ने में सक्षम नहीं होगा)।

नमक सिर्फ एक मनमाना स्ट्रिंग है:

और नमक क्या करता है उपरोक्त लेख से, करते हैं। एक अलग नमक मान का मतलब है कि एक अलग विरोधी जालसाजी टोकन उत्पन्न किया जाएगा। इसका मतलब यह है कि भले ही कोई हमलावर किसी भी तरह के वैध टोकन को पकड़ने का प्रबंधन करता है, फिर भी वे आवेदन के अन्य हिस्सों में इसका पुन: उपयोग नहीं कर सकते हैं, जहां एक अलग नमक मूल्य की आवश्यकता होती है।

अद्यतन: टोकन कैसे उत्पन्न होता है? source डाउनलोड करें, और एंटीफॉर्गेरीडाटासेरियलाइज़र, एंटीफोर्गेरीडेटा कक्षाओं पर एक नज़र डालें।

+0

वास्तव में मुझे यह सब पता है, क्या आपने मेरी समस्या देखी? मैं अभी ब्लॉग से आया हूं। – MemoryLeak

+0

कौन सी समस्या "सत्र तय", या "नमक" के बारे में सवाल? "सत्र तय" मैं परिचित नहीं हूं, आप साइट को स्कैन करने के लिए क्या उपयोग कर रहे हैं? – russau

+0

धन्यवाद, रूस, लेकिन मैं सिर्फ ब्लॉग पोस्ट पर सहमत नहीं हूं, फिर मैं यहां एक प्रश्न पूछता हूं .... – MemoryLeak

1

आप कुछ असंबंधित समस्याओं पूछना है:

  1. मैं क्यों अपनी सुरक्षा सॉफ्टवेयर 'तय सत्र' रिपोर्ट कर रहा है पता नहीं है।

यह प्रयोग किया जाता है (शायद) को मान्य करने के कि प्रत्येक अनुरोध मान्य है: प्रलेखन कि रिपोर्ट

  • विरोधी जालसाजी टोकन के साथ आता है पढ़ने की कोशिश करो। तो मान लें कि कोई भी पृष्ठ ?x=1 पर एक लिंक पेश करने का प्रयास करता है, यदि टोकन भी पास नहीं किया गया है, तो अनुरोध अस्वीकार कर दिया जाएगा। इसके अलावा, यह एक ही आइटम की डुप्लिकेट पोस्टिंग को रोक सकता है। आप क्लिक करते हैं तो 'पोस्ट' में दो बार, टोकन संभावना (प्रत्येक अनुरोध) बदल जाएगा, और इस मामले की तरह कुछ के माध्यम से पता लगाया जाएगा:

    Session["nextToken"] = token; 
    WriteToken(token); 
    
    ... 
    
    if(!Request["nextToken"] == Session["nextToken"]){ 
        ... 
    } 
    
    // note: order in code is slightly different, you must take the token 
    // before regenerating it, obviously 
    

    मैं इस के लिए अवधि (हमले बचाता है) लगता है "कहा जाता है सीएसआरएफ "(क्रॉस साइट अनुरोध फोर्जरी), इन दिनों।

  • +0

    लेकिन क्यों किसी ने कहा कि टोकन सत्र आईडी से संबंधित है? – MemoryLeak

    +0

    मेमोरी लीक: मुझे नहीं पता, मैंने विशेष रूप से एएसपी.नेट एमवीसी का उपयोग नहीं किया है, मैं आम तौर पर अनुरोध टोकन के प्रयोजनों के लिए उत्तर दे रहा था। उम्मीद है कि कोई आपके लिए इसे साफ़ कर सकता है। –

    +0

    यदि आप सही हैं, तो "नमक" के लिए क्या उपयोग किया जाता है? – MemoryLeak

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