2010-10-17 6 views

उत्तर

9

असल में विरोधी जालसाजी टोकन किसी को भी आपकी साइट पर अनुरोध सबमिट करने से रोकते हैं वास्तविक उपयोगकर्ता द्वारा उत्पन्न नहीं होने वाली दुर्भावनापूर्ण स्क्रिप्ट द्वारा उत्पन्न होते हैं। एक HTTP केवल कुकी है (ब्राउज़र में चल रही एक स्क्रिप्ट द्वारा पठनीय नहीं है, लेकिन ब्राउज़र द्वारा भेजा गया है और सर्वर द्वारा पहुंचा जा सकता है) जो क्लाइंट को भेजा जाता है, इसका उपयोग एक छिपे हुए फ़ील्ड मान को उत्पन्न करने के लिए किया जाता है जिसे उसके बाद सत्यापित किया जाता है कुकी। कम से कम मुझे लगता है कि यह प्रक्रिया है।

इस का अच्छा वर्णन यहाँ जो है आप वास्तव में क्या कह रहे हैं के बारे में https://blogs.msmvps.com/luisabreu/blog/2009/02/09/the-mvc-platform-the-new-anti-forgery-token/

0

आम तौर पर, विरोधी-जालसाजी-टोकन एक HTML छिपी हुई इनपुट है जो आपके लिए सीएसआरएफ हमलों से बचने के लिए प्रदान की जाती है। व्यापक रूप से, यह क्लाइंट को क्लाइंट को भेजे गए मान की तुलना करके काम करता है जो क्लाइंट पोस्ट पर वापस भेजता है। क्या आप सब कुछ ढूंढ रहे हैं?

आपको अधिक जानकारी के लिए शायद एमएसडीएन की जांच करनी चाहिए।

+0

सरल उदाहरण का उल्लेख मैं बेहतर संबोधित समस्या है क्या समझ करना चाहते हैं। मुझे लगता है कि एक्सएसएस से थोड़ा अलग है। है न? – Lorenzo

+2

@ लोरेन्ज़ो: 'एंटीफोर्गेरी टोकन' का उपयोग सीएसआरएफ के खिलाफ बचाव के लिए किया जाता है, न कि एक्सएसएस। http://en.wikipedia.org/wiki/Cross-site_request_forgery – LukeH

+0

@LukeH: सुधार के लिए धन्यवाद। –

6

AntiForgeryToken का उपयोग cross-site request forgery हमलों के खिलाफ कम करने में मदद करता है।

जब आप इसका उपयोग करते हैं, तो आपके फॉर्म में एक छिपे हुए फ़ील्ड होंगे और एक कुकी भी ब्राउज़र में सेट की जाएगी।

फिर, जब फॉर्म सबमिट किया जाता है, तो छिपे हुए फ़ील्ड को कुकी मान के विरुद्ध चेक किया जाता है (माना जाता है कि ValidateAntiForgeryTokenAttribute का उपयोग किया जाता है): यदि फ़ील्ड और कुकी मैच तो फॉर्म पोस्ट शायद वास्तविक है; अगर वे नहीं करते हैं तो शायद यह नहीं है। (एक सीएसआरएफ हमले का प्रयास करने वाला हमलावर छिपे हुए क्षेत्र को बनाने में सक्षम हो सकता है, लेकिन वे संबंधित कुकी मूल्य भी तैयार नहीं कर पाएंगे।)

+0

उत्तर के लिए धन्यवाद। यदि सभी उपयोगकर्ता मान कोड में सही ढंग से एन्कोड किए गए हैं, तो क्या यह अभी भी हो सकता है? – Lorenzo

+0

@LukeH या कोई भी: उपयोगकर्ता छुपा क्षेत्र बनाने में सक्षम कैसे होगा? – ilans

2

खैर आज, हम एक वेब अनुप्रयोग में सुरक्षा भंग होने की एक प्रकार है कि क्रॉस साइट रिक्वेस्ट फोर्जरी कहा जाता है पर नजर डालेंगे या है सीएसआरएफ हैक। सीएसआरएफ एक्सएसएस के कम ज्ञात चचेरे भाई हैं। क्रॉस साइट अनुरोध फर्जी एक हैक का एक प्रकार है जहां हैकर उपयोगकर्ता पर किसी वेबसाइट के ट्रस्ट का फायदा उठाता है।

यह करने के लिए आसान तरीका ProductDetails में ValidateAnitForgery टोकन विशेषता का उपयोग कार्रवाई विधि पोस्ट के रूप में इस प्रकार है

[HttpPost] 
[Authorize(Roles = "Admins")] 
[ValidateAntiForgeryToken()] 
public ActionResult Edit(ProductDetails productdetails) 
{ 
    if (ModelState.IsValid) 
    { 
    db.Entry(productdetails).State = EntityState.Modified; 
    db.SaveChanges(); 
    return RedirectToAction("Index"); 
} 
return View(productdetails); 
} 

क्लाइंट की तरफ AntiForgeryToken और कुकी उत्पन्न करने के लिए करने के लिए है, हम यह घोषणा में इस प्रकार है Edit.cshtml

@using (Html.BeginForm()) { 
@Html.ValidationSummary(true) 
@Html.AntiForgeryToken() 
<fieldset> 
    <legend>ProductDetails</legend> 

में HTML प्रपत्र ...

यह सुनिश्चित करता है कि एक फार्म पोस्ट किए जाने से करने के लिए सर्वर वास्तव में जनरल था उसी सर्वर द्वारा मिटाया गया। इस प्रकार नकली रूप जिनमें एंटीफॉर्गेरी टोकन सही सर्वर से नहीं है, अस्वीकार कर दिया जाता है।

इसके अलावा यहां

https://github.com/devcurry/mvc101-anti-forgery-token

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