कैसे PHP में क्रॉस साइट अनुरोध जाली (सीएसआरएफ) हमलों को रोकने के लिए
एक क्रॉस साइट अनुरोध जालसाजी हमले (CSRF) वेब अनुप्रयोग कमजोरियों जहां शिकार अनजाने ब्राउज़र किसी विशेष साइट के लिए कनेक्शन सत्र का उपयोग करता है में एक स्क्रिप्ट चलाने का एक प्रकार है। सीएसआरएफ हमले जीईटी या पोस्ट अनुरोधों पर किया जा सकता है। यह लेख आपको दिखाएगा कि आप अपने वेब एप्लिकेशन पर सीएसआरएफ हमलों से कैसे बचें।
कदम
विधि 1
विधियों का विवरणअपने जीईटी और पोस्ट अनुरोध पर सीएसआरएफ हमलों से बचने के लिए हम दो तरीकों का इस्तेमाल करेंगे।
प्रत्येक अनुरोध के साथ पहले एक यादृच्छिक टोकन शामिल करना है, जो प्रत्येक सत्र के लिए एक विशिष्ट स्ट्रिंग उत्पन्न होती है। हम टोकन उत्पन्न करते हैं और फिर इसे प्रत्येक मॉड्यूल में एक गुप्त इनपुट के रूप में शामिल करते हैं। सिस्टम जांचता है कि क्या मॉड्यूल उपयोगकर्ता सत्र चर में संग्रहीत एक से टोकन की तुलना करके मान्य है। इसका मतलब यह है कि एक हमलावर, एक अनुरोध उत्पन्न करने के लिए, टोकन के मूल्य को पता होना चाहिए।
दूसरी विधि, फॉर्म में प्रत्येक फ़ील्ड के लिए यादृच्छिक नाम का उपयोग करना है। प्रत्येक फ़ील्ड के लिए यादृच्छिक नाम का मान एक सत्र चर में संग्रहीत होता है और, प्रपत्र प्रस्तुत किए जाने के बाद, सिस्टम एक नया यादृच्छिक मूल्य उत्पन्न करता है। इसका मतलब यह है कि हमला करने के लिए काम करने के लिए, हमलावर को इन यादृच्छिक नामों का अनुमान लगाना चाहिए।
उदाहरण के लिए, एक ऐसा अनुरोध जो एक बार ऐसा दिखाई देता था:

अब यह इस तरह दिखेगा:

विधि 2
Csrf.class.php फ़ाइल बनाएँयह मुख्य फाइल है जिसमें सीएसआरएफ हमलों को रोकने के लिए उपयोग किए जाने वाले सभी फ़ंक्शन शामिल होंगे।


यह फ़ंक्शन उपयोगकर्ता सत्र से टोकन आईडी लेता है, अगर कोई पहले से ही नहीं बनाया गया है, जिसके बाद यह एक यादृच्छिक टोकन उत्पन्न करता है।
सार्वजनिक समारोह get_token_id () {यदि (isset ($ _ सत्र [`टोकन_आईड`])) {$ _SESSION [`टोकन_आईडी`] -} और {$ टोकन_आईडी = $ इस->यादृच्छिक (10) - $ _ सत्र [`token_id`] = $ token_id-return $ token_id-}}

यह फ़ंक्शन टोकन मान प्राप्त करता है, यदि यह पहले से ही नहीं बनाया गया है, जिसके बाद यह एक उत्पन्न करता है
} Else {$ टोकन = हैश ( `SHA256`, $ इस- - सार्वजनिक समारोह टोकन () {अगर (isset ($ _ सत्र [ `Token_value`])) {वापसी $ _ सत्र [ `Token_value`] मिल>यादृच्छिक (500)) - $ _ सत्र [`token_value`] = $ टोकन-वापसी $ टोकन-}}

इस फ़ंक्शन का उपयोग जांचने के लिए किया जाता है कि टोकन आईडी और टोकन मान मान्य हैं या नहीं। यह उपयोगकर्ता सत्र वेरिएबल में संग्रहीत मानों के साथ GET या POST अनुरोध के मूल्यों को जांच कर करता है।
सार्वजनिक कार्य check_valid ($ विधि) {यदि ($ method == `post` || $ method == `get`) {$ post = $ _POST- $ get = $ _GET- अगर (isset ($ {$ method} [ $ इस->get_token_id ()]) && ($ {} $ विधि [$ इस->get_token_id ()] == $ this->get_token ())) {रिटर्न सच-} और {वापसी झूठी-}} और {वापसी- झूठी}}}

सीएसआरएफ हमले के खिलाफ इस आलेख में उल्लिखित दूसरा बचाव है। यह फ़ंक्शन फ़ॉर्म फ़ील्ड के लिए यादृच्छिक नाम उत्पन्न करता है।
सार्वजनिक समारोह form_names ($ नाम, $ पुनर्जन्म) {$ मूल्यों = सरणी () - foreach ($ नामों के रूप में $ एन) {if ($ पुनर्जन्म == सच) {सेट नहीं ($ _ सत्र [$ n]) -} $ एस = जारी ($ _ सत्र [$ n])? $ _SESSION [$ n]: $ this->यादृच्छिक (10) - $ _ सत्र [$ n] = $ s- $ मान [$ n] = $ s-} $ मान लौटें-}

यह फ़ंक्शन एन्ट्रापी बढ़ाने के लिए लिनक्स रैंडम फ़ाइल का उपयोग करके एक यादृच्छिक स्ट्रिंग उत्पन्न करता है।
निजी समारोह यादृच्छिक ($ लेन) {(function_exists ( `openssl_random_pseudo_bytes`)) {$ byteLen = intval (($ लेन / 2) + 1) यदि - $ लौट = substr (BIN2HEX (openssl_random_pseudo_bytes ($ byteLen)), 0, $ लेन) -} elseif (@is_readable ( `/ dev / urandom`)) {$ च = fopen ( `/ dev / urandom`, `आर`) - $ urandom = fread ($ च, $ लेन) -fclose ($ च) - $ वापसी = `` -} अगर (खाली ($ वापसी)) {के लिए (i = $ 0- $ s<$ लेन - $ i ++) {अगर) {अगर ($ मैं% 2 == 0) {mt_srand (समय ()% 2147 + 1000000 * (डबल) microtime () * 1000000) (isset ($ urandom!) - } $ रैंड = 48 + mt_rand ()% 64} else {$ रैंड = 48 + ord ($ urandom [$ i])% 64} अगर ($ rand57) $ रैंड + = 7-यदि ($ rand90) $ रैंड + = 6-अगर ($ रैंड == 123) $ रैंड = 52 यदि ($ रैंड == 124) रैंड = $ 53- $ वापसी = chr ($ रैंड) -।}}} वापसी $ लौटने

यह सीएसआरएफ क्लास बंद कर देगा।
}
विधि 3
Csrf.class.php के साथ पृष्ठों को सुरक्षित रखेंये कदम आपको दिखाएंगे कि सीएसआरएफ हमले को रोकने के लिए सीएसआरएफ वर्ग का उपयोग कैसे करें।

निम्नलिखित कोड दर्शाता है कि किसी फॉर्म पर सीएसआरएफ क्लास कैसे लागू किया जाए।
फेसबुक पर खेल अनुरोधों को कैसे ब्लॉक करें
स्काइप पासवर्ड कैसे बदलें
कैसे iPad पर इतिहास रद्द करने के लिए
फेसबुक पर मित्रता के लिए एक अनुरोध को कैसे रद्द करें
पोकेमोन फायर रेड में ड्रैतिनी कैद कैसे करें
MailPoet का उपयोग कर एक WordPress वेबसाइट पर एक प्रत्युत्तर ऑटो कैसे बनाएं
बार कोड कैसे बनाएं
संयुक्त राज्य अमेरिका में आप्रवासन की स्थिति की जांच कैसे करें
जावा में पंक्तियों को कैसे विभाजित करें
PHP और MySQL का उपयोग करके एक सुरक्षित लॉगिन स्क्रिप्ट कैसे बनाएं
Android पर एक HTTP अनुरोध पोस्ट कैसे करें
4 Pics 1 शब्द कैसे खेलें
Couchsurfing Couchmanager से हॉस्पिटैलिटी अनुरोधों को प्रबंधित कैसे करें
DMOZ पर अपनी साइट कैसे दर्ज करें
अपनी वेबसाइट पर भुगतान फ़ॉर्म कैसे एकीकृत करें
फेसबुक पर अपनी मैत्री अनुरोध सेटिंग्स को कैसे बदलें
कैसे मुफ्त उपहार कार्ड प्राप्त करने के लिए
कैसे Pokemon कार्ड के साथ खेलने के लिए
Couchsurfing.org पर ओपन काउच अनुरोध पोस्ट कैसे करें
अमेरिकी नागरिक से शादी करने के बाद ग्रीन कार्ड के लिए आवेदन कैसे करें
Couchsurfing पर एक संदर्भ का जवाब कैसे देना