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

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

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


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

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

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

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

यह फ़ंक्शन रैंडम लिनक्स फ़ाइल का उपयोग कर एक यादृच्छिक स्ट्रिंग उत्पन्न करता है, जो कि अधिक एंट्रपी के लिए है।
निजी समारोह यादृच्छिक ($ लेन) {अगर (@is_readable ( `/ dev / urandom`)) {$ च = fopen ( "/ dev / urandom `,` आर `) - $ urandom = fread ($ च, $ लेन) -fclose ($ f) -} $ return = `` - के लिए ($ i = 0- $ i<$ लेन - $ i ++) {अगर (isset ($ urandom!)) {अगर ($ मैं% 2 == 0) mt_srand (समय ()% 2147 * 1000000 + (डबल) microtime () * 1000000) - $ रैंड = 48 + mt_rand ()} किसी और $ 64% रैंड = 48 + ord ($ urandom [$ i])% 64-अगर ($ रैंड>57) $ रैंड + = 7-अगर ($ रैंड>90) $ रैंड + = 6-अगर ($ रैंड == 123) $ रैंड = 52-अगर ($ रैंड == 124) $ रैंड = 53- $ रिटर्न। = CHR ($ रैंड) -} वापसी $ वापसी-}

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

नीचे दिए गए कोड से पता चलता है कि एक फॉर्म में सीएसआरएफ वर्ग को कैसे लागू किया जाए।
कैसे स्पायवेयर ब्लॉक करने के लिए
Excel में डेटा मिलान कैसे प्राप्त करें
PHP और MySQL में एक सुरक्षित लॉगिन स्क्रिप्ट कैसे बनाएं
अंतिम काल्पनिक एक्स में राक्षस एरिना में नेस्लेग को कैसे पराजित करें
किंगडम हार्ट II में वेक्सन (डेटा की लड़ाई) को कैसे पराजित करें
वेब के लिए सुरक्षित कार्यक्रम कैसे विकसित करें
फ़ोटोशॉप में घटता डुप्लिकेट कैसे करें
Android पर HTTP पोस्ट अनुरोध कैसे निष्पादित करें
एचटीएमएल में एक लिंक कैसे छिपाएगा
कैसे एक वेबसाइट हैक करने के लिए
प्रतिरोधों की पहचान कैसे करें
आतंक हमलों से निपटने के लिए
आईएसबीएन कोड को कैसे समझें
आतंक हमलों की गंभीरता को कम कैसे करें
जानवरों के हमलों को कैसे बचाना
शादी प्रमाणपत्र का अनुरोध कैसे करें
एक Linksys राउटर की रक्षा कैसे करें
ऑर्डरहाइड के साथ ऑर्डर कैसे लगाया जाए
Linux पर X11 कैसे कॉन्फ़िगर करें
कैसे उबंटू लिनक्स में vsftpd एफ़टीपी को कॉन्फ़िगर करें
वॉल्यूम को कैसे अलग करना