2014-04-05 12 views
5

संपादित करें: मुझे शुरुआत में यह कहना चाहिए था, मैं फ्रोनएंड में एंगुलरजेएस का उपयोग कर रहा हूं, और मैं एक्सएचआर के माध्यम से सभी अनुरोध कर रहा हूं। मैं प्रत्येक उपयोगकर्ता अनुरोध के लिए CSRF Token का उपयोग कर एक एप्लिकेशन विकसित कर रहा हूं।लार्वेल सीएसआरएफ टोकन

क्या मुझे प्रत्येक अनुरोध के बाद Token पुन: उत्पन्न करना चाहिए?

या

Session::forget("_token") and Session::put("_token", RANDOM_SOMETHING) 

तरह यह काफी एक ही एक-एक उपयोगकर्ता Session उपयोग करने के लिए है?

क्या कोई फायदा है?

+0

आप के लिए टोकन का उपयोग कर रहे हैं क्या? मान लीजिए कि आप इसे एक्सएसएस को रोकने के अलावा किसी अन्य चीज़ के लिए उपयोग कर रहे हैं, यह कहना मुश्किल है कि यह आपके परिदृश्य के लिए ** "अच्छा" ** होगा। Xss के लिए – Sam

+0

@ सैम टोकन? – itachi

+0

@itachi Laravel के सीएसआरएफ टोकन का उपयोग क्रॉस-साइट अनुरोधों (आमतौर पर एक्सएसएस) को रोकने के लिए किया जाता है।यह एक टोकन वेबसाइट के सत्र में सहेजा गया है और प्रत्येक फॉर्म सबमिशन के साथ भेजा गया है, इसलिए सत्र से साइट के साथ सही सत्र प्राप्त करने के लिए एक फॉर्म प्रस्तुत किया जाना चाहिए .. क्रॉस-साइट स्क्रिप्टिंग के साथ अनुरोध करने के बजाय। – Sam

उत्तर

4

Laravel आप के लिए यह करना चाहिए, आप यहाँ डॉक्स में 'CSRF संरक्षण' अनुभाग देखें _token

<input type="hidden" name="_token" value="<?php echo csrf_token(); ?>"> 

के निर्माण/विलोपन का प्रबंधन करने की जरूरत नहीं है: http://laravel.com/docs/security

+0

मैं FronEnd में AngularJS का उपयोग कर रहा हूं, मैं प्रत्येक एक्सएचआर अनुरोध पर सीएसआरएफ टोकन भेज रहा हूं, मैं नियमित रूप से –

+1

को संभालने में सक्षम नहीं हूं। मैंने सत्र :: टोकन() और टोकन को पुनर्प्राप्त करने के लिए अन्य विधियों का उपयोग करने का प्रयास किया है, लेकिन लैरावेल पुन: उत्पन्न नहीं होता है टोकन, मेरा सवाल यह था कि अगर मुझे टोकन को दोबारा बदलना चाहिए या पूरे सत्र पर उसी का उपयोग करना चाहिए –

2

निर्भर करता है । यदि हमलावर एमआईटीएम नहीं है, इस अर्थ में कि वे आपके वेब ऐप और एपीआई सर्वर के बीच यातायात पर नजर नहीं रख सकते हैं, पूरे सत्र के लिए एक सीएसआरएफ टोकन पर्याप्त होना चाहिए।

मान लें कि आप सर्वर-साइड पर भी संवेदनशील संचालन की रक्षा करते हैं (यानी संसाधन के मालिक को केवल संसाधनों तक पहुंच की अनुमति दें, जैसे "मेरा खाता हटाएं" आदि) टोकन यह सुनिश्चित करेगा कि अनुरोध करने वाला ब्राउज़र है वैध, प्रमाणीकृत उपयोगकर्ता का ब्राउज़र। मुझे लगता है कि आपको चिंता करनी चाहिए।

दूसरी तरफ, यदि हमलावर वेब ऐप और आपके एपीआई के बीच गैर-सुरक्षित यातायात को देखने में सक्षम है, तो वे सीएसआरएफ टोकन और आपके session_id को पकड़ सकते हैं और खराब सामग्री को पारदर्शी रूप से कर सकते हैं। इस तरह के मामले में प्रत्येक अनुरोध (POST, या संवेदनशील ऑपरेशन करने वाले किसी भी प्रकार के लिए टोकन को छोड़कर) को छोड़कर, केवल अपनी नौकरी को थोड़ा और कठिन बना देता है, लेकिन आप अभी भी बर्बाद हो जाते हैं।

मेरे 2 सेंट ...

+0

यह उत्तर ओपी द्वारा स्वीकार किया जाना चाहिए क्योंकि यह केवल एकमात्र ऐसा है जो वास्तव में अपने प्रश्न का उत्तर देने का प्रयास करता है। –

7

Laravel 5 के साथ ब्लेड टेम्पलेट का उपयोग कर, यह बहुत आसान है।

आप केवल CSRF टोकन का मान चाहते हैं, आप इसे लिखित द्वारा उत्पन्न कर सकते हैं:

{{ csrf_token() }} 

जो इस तरह टोकन मान उत्पन्न करता है:

7YC0Sxth7AYe4RFSjzaPf2ygLCecJhPbyXhz6vvF 

आप कर रहे हैं फॉर्म का उपयोग करके, आप फॉर्म के अंदर कोड की निम्न पंक्ति जोड़ सकते हैं:

{{ csrf_field() }} 

जो इस तरह एचटीएमएल उत्पन्न करेगा:

<input type="hidden" name="_token" value="7YC0Sxth7AYe4RFSjzaPf2ygLCecJhblahblah"> 
संबंधित मुद्दे