दिलचस्प पोस्ट
समूहीकृत SQL परिणामों के प्रत्येक समूह के लिए अधिकतम मूल्य के साथ रिकॉर्ड प्राप्त करें आईआईएस 7 एपलीकेशन पूल में नेट फ्रेमवर्क 4.5 संस्करण कैसे सेट करें I क्या MySQL में केवल एक फ़ील्ड के लिए एक WHERE क्लॉज दिखाने का कोई तरीका है? आप jQuery में एक तत्व का चयन करें एक विशेष विकल्प कैसे चुनते हैं? लिनक्स / उबंटू पर MySQL के बीच के स्थान के साथ एक स्तंभ का नाम कैसे चुनें मोंगोज़ (मोंगोडब) बैच डालने Xcode बिल्ड सेटिंग्स में "आर्किटेक्चर" और "मान्य आर्किटेक्चर" के बीच क्या अंतर है? मैं jQuery के माध्यम से एक एंकर क्लिक कैसे अनुकरण कर सकता हूं? NSFontAttributedString XCode 6.1 से पहले काम किया फार्म के साथ कुकी भ्रामकप्रमाणन .सेटअथकुकी () विधि क्या iPhone डिवाइस armv7s और arm64 पर चलेंगे? कंसोल ऐप में सी # में async? कैसे चेक करें कि DOM एक ढांचे के बिना तैयार है? वाक्यों पर पायथन विभाजन पाठ कोड साइन त्रुटि: पहचान 'आईफ़ोन डेवलपर' किसी भी मान्य प्रमाणपत्र / निजी कुंजी जोड़ी को डिफ़ॉल्ट कुंजीचेन से मेल नहीं खाती

PHP में सीएसआरएफ को रोकना

  1. GET और POST पैरामीटर में प्रमाणीकरण की आवश्यकता होती है, केवल कुकीज ही नहीं;

  2. HTTP रेफरर हैडर की जांच कर रहा है;

विकिपीडिया पर इस पोस्ट को देखा और सोच रहा था कि मैं उन्हें कैसे लागू कर सकता हूं

ठीक है … मैं Kohana PHP फ़्रेमवर्क का उपयोग कर रहा हूं और मुझे रेफ़रलकर्ता हैडर निर्धारित करने की सुविधा है, लेकिन मैं रेफरर हैडर में वास्तव में क्या जांचूं? रूपरेखा कार्य केवल संदर्भ के यूआरएल को देता है

और मैं GET और POST पैरामीटर को कैसे सत्यापित करूं? किसके खिलाफ? संग्रहीत जानकारी? अपेक्षित प्रकार?

वेब के समाधान से एकत्रित समाधान "PHP में सीएसआरएफ को रोकना"

सीएसआरएफ को रोकने के लिए आप एक बार टोकन, पोस्ट किए गए और मौजूदा सत्र से जुड़े हुए को मान्य करना चाहते हैं। निम्नलिखित की तरह कुछ । ।

उस पृष्ठ पर जहां उपयोगकर्ता एक रिकॉर्ड को हटाने का अनुरोध करता है:

confirm.php

<?php session_start(); $token= md5(uniqid()); $_SESSION['delete_customer_token']= $token; session_write_close(); ?> <html> <body> <form method="post" action="confirm_save.php"> <input type="hidden" name="token" value="<?php echo $token; ?>" /> Do you really want to delete? <input type="submit" value=" Yes " /> <input type="button" value=" No " onclick="history.go(-1);" /> </form> </body> </html> 

फिर जब वास्तव में रिकॉर्ड को हटाने की बात आती है:

confirm_save.php

 <?php session_start(); $token = $_SESSION['delete_customer_token']; unset($_SESSION['delete_customer_token']); session_write_close(); if ($token && $_POST['token']==$token) { // delete the record } else { // log potential CSRF attack. } ?> 

टोकन को लगता है कि प्रत्येक हटाना अनुरोध के लिए अनन्य होना चाहिए, केवल $ _POST के माध्यम से स्वीकार किया जाए और कुछ मिनट (इस उदाहरण में नहीं दिखाया गया समाप्ति) के बाद समाप्त हो जाए।

रेफरल के साथ आपके सभी कामकाज की जांच करना सुनिश्चित करना है कि रेफ़र आपकी साइट / सिस्टम से है अगर रेफ़रर मौजूद नहीं है या किसी विदेशी साइट से है तो फिर से रिफॉर्म चेक असफल हो जाता है और आप जो भी अनुरोध किया जा रहा है उसका सम्मान नहीं करना चाह सकते हैं।

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

यह व्यवहार ब्राउज़र के बीच कुछ भिन्न होता है। यदि आप जावास्क्रिप्ट का उपयोग एक फॉर्म सबमिट करने के लिए करते हैं तो आप आमतौर पर ठीक है। यदि आप window.location की तरह कुछ का उपयोग करते हैं, तो संभवतः आपको पुनरावृत्त डेटा उपस्थित होने की उम्मीद नहीं करनी चाहिए।

सीएसआरएफ की रोकथाम के लिए एक लोकप्रिय विधि कुकीज का उपयोग नहीं करना है और हमेशा संदर्भों के बीच राज्य को पारित करना है … किसी अनुप्रयोग में सभी लिंक में सत्र टोकन उत्तीर्ण करना।

[नोट:] Kohana ढांचे को नापसंद किया गया है, Kohana PHP 7 के लिए नई कांटा https://koseven.ga/ है और यह समर्थन करता है CSRF कार्यक्षमता सुरक्षा वर्ग है।

आप आधिकारिक koseven सुरक्षा सुविधा का उपयोग कर सकते हैं। यहां कुसेवेन सुरक्षा वर्ग के लिए एक लिंक है