पृष्ठ लोड होने पर आपको केवल एक गुप्त (टोकन) उत्पन्न करने की आवश्यकता है। इसे पृष्ठ पर और सत्र में रखें। आम तौर पर मैंने इसे एक छिपे हुए क्षेत्र के रूप में रूप में रखा है यदि मैं कर सकता हूं, या यदि यह एक बहुत ही अजीब पृष्ठ का हिस्सा है, तो मैं इसे संबंधित तत्व पर एक मूल्य विशेषता में रखूंगा जैसे पूरे पृष्ठ को div wrapping। अन्य एक चर सेट को गुप्त में एक स्क्रिप्ट टैग जोड़ देंगे।
फिर, जब भी आप AJAX कॉल करते हैं या फॉर्म भेजते हैं, तो आप रहस्य के लिए एक फ़ील्ड शामिल करते हैं। (चेकेसॉफ्ट का जवाब कच्चे जेएस के साथ ऐसा करने के तरीके के बारे में अधिक जानकारी देता है, इसे लगभग jQuery या किसी भी अन्य ढांचे के साथ किया जा सकता है जिसका उपयोग आप कर सकते हैं।) इसे सुनिश्चित करने के लिए बैक एंड पर सत्र मूल्य से मिलान करें कि वे अभी भी हैं वही (एक ही स्रोत से आया), और आप अच्छे हैं।
यदि आप सुरक्षा जोड़ना चाहते हैं, तो प्रत्येक अनुरोध पर रहस्य को पुन: उत्पन्न करें और अनुरोधित डेटा के साथ उस नए रहस्य को वापस कर दें। अपने सभी AJAX अनुरोधों को उस नए क्षेत्र के साथ उस छिपे हुए फ़ील्ड या मान विशेषता को प्रतिस्थापित करें। यदि आप बहुत से अनुरोध, या समवर्ती अनुरोध कर रहे हैं तो यह वास्तव में अच्छी तरह से काम नहीं करता है। असल में, प्रत्येक पृष्ठ को लोड होने पर प्रत्येक बार उत्पन्न करना पर्याप्त होना चाहिए यदि आप इसे HTTPS पर कर रहे हैं, जो आपको होना चाहिए।
यदि आप एचटीटीपीएस पर ऐसा नहीं कर रहे हैं, तो यह वास्तव में कोई फर्क नहीं पड़ता, इंटरनेट कैफे/स्टारबक्स में बैठे किसी व्यक्ति ने सत्र चुरा सकता है और पृष्ठ को फिर से लोड कर सकता है।
यदि आप इसे बहुत कुछ करने जा रहे हैं, तो यह jQuery और various plugins की जांच करने योग्य है जो आपके लिए सीएसआरएफ सुरक्षा करने में मदद करेगा। Also, my way isn't the only way.
प्रतिक्रिया के लिए धन्यवाद। अगर मैं इसे आपके लिंक में से एक के अनुसार अनुरोध शीर्षलेख के रूप में भेजता हूं: 'var csrf_token = ' = $ Ajaxtoken_value?>'; $ ("शरीर")। बाँध ("ajaxSend", समारोह (एल्म, XHR, रों) { \t अगर (s.type == "पोस्ट") { xhr.setRequestHeader ('एक्स-CSRF-टोकन' , csrf_token); } }); ' मैं AJAX पक्ष पर कैसे जांच करूं? क्या मुझे एक पोस्ट अनुरोध का उपयोग करके टोकन को पुनः प्राप्त करना होगा? – Anonymous
@ अनाम यह आपकी पसंद की भाषा पर निर्भर करेगा। यह PHP की तरह दिखता है, इसलिए मैं कुछ [getallheaders] (http://php.net/manual/en/function.getallheaders जैसे कुछ जांचता हूं।php) – DampeS8N
मुझे पता चला कि इसे कैसे जांचें: 'अगर ($ _ सर्वर [' HTTP_X_CSRF_TOKEN '] == $ _SESSION [' AJAXtoken_value ']) {' धन्यवाद। एकमात्र समस्या यह है कि अनुरोध http से अधिक है। मैं अपनी सेटिंग्स कैसे बदलूं ताकि अनुरोध https पर किया जा सके? – Anonymous