Protecting against Cross-Site Scripting (XSS) and Cross-Site Request Forgery (CSRF) In Hindi

Protecting against Cross-Site Scripting (XSS) and Cross-Site Request Forgery (CSRF) In Hindi

पीएचपी प्रोग्रामिंग मे किसी वेब एप्लिकेशन को क्रॉस-साइट स्क्रिप्टिंग (XSS) और क्रॉस-साइट रिक्वेस्ट फ़ोर्जरी (CSRF) जैसे किसी भी प्रकार के सिस्टम अटैक से प्रोटेक्ट करने या किसी भी वेब एप्प्स की सिक्योरिटी और इंटीग्रिटी को मेन्टेन करने में बहुत इम्पोर्टेट है. किसी भी डेवलप्ड वेब साइट या वेब एप्प्स को ऑनलाइन क्रॉस-साइट स्क्रिप्टिंग (XSS) और क्रॉस-साइट रिक्वेस्ट फ़ोर्जरी (CSRF) में ये दोनों फीचर्स वेबसाइट या एप्लीकेशन की रिलायबिलिटी और रियल टाइम बिहैवियर को बनाए रखने में अति आवश्यक एलिमेंट है।

Protecting against Cross-Site Scripting (XSS) and Cross-Site Request Forgery (CSRF) In Hindi

So, let’s take a closer look at the cross-site scripting (XSS) and cross-site request forgery (CSRF) features in PHP programming.

Cross-site scripting (XSS) in PHP programming.

What are XSS features?

किसी भी वेबसाइट या वेब एप्प्स में क्रॉस-साइट स्क्रिप्टिंग (XSS) एक्टिविटीज तब परफॉर्म होती है, जब कोई मालिसियस यूजर इंट्रूडर अट्टकेर किसी वेबसाइट में जानबूचकर इन्फेक्टेड वेब स्क्रिप्ट सामान्य रूप से जावास्क्रिप्ट सोर्स कोड को क्रिएट या एंटर करता है, जो की बाद में किसी अन्य वेब विज़िटर या अटैकर यूजर के द्वारा वेब ब्राउज़र के में एक्सेक्यूट किया जाता है।

Damage to websites or web apps can include.

  • मौजूदा वेबसाइट सेशन हाईजैक कर लॉगिन सेशन कुकीज़, यूजर टोकन, आदि इनफार्मेशन को चुराना।
  • रैंडम वेब विजिटर को इन्फेक्टेड मालिसियस वेबसाइट या एप्प्स पर रीडायरेक्ट करना।
  • वेबसाइट या एप्प्स का डेटा चोरी करना जैसे, ऑथेंटिकेट यूजर इनपुट या लॉगिन क्रेडेंशियल को चुराना और फिर फिरौती मांगना आदि है।

Types of XSS in PHP

  • Stored XSS – इसमें मालिसियस जावास्क्रिप्ट सोर्स कोड को परमानेंट आर्डर में टार्गेटेड वेब सर्वर जैसे, किसी वेब या एप्प्स डेटाबेस में स्टोर्ड होती है, और बाद में यूजर को प्रोवाइड की जाती है।
  • Reflected XSS – इसमें मालिसियस जावास्क्रिप्ट सोर्स कोड को बैकेंड वेब सर्वर पर बिना स्टोर किए तुरंत वेब सर्वर से जैसे, क्वेरी पैरामीटर के माध्यम से रिफ्लेक्ट किया जाता है।
  • DOM-based XSS – यह अटैक उस समय होता है, जब इंटरनेट में DOM (डॉक्यूमेंट ऑब्जेक्ट मॉडल) में किसी प्रकार के यूजर मॉडिफिकेशन के कारण वेब विजिटर के वेब ब्राउज़र द्वारा मालिसियस जावास्क्रिप्ट सोर्स कोड को एक्सेक्यूट किया जाता है।

How to protect against XSS attacks in PHP.

  • Escape output – इसमें किसी भी प्रकार के मालिसियस जावास्क्रिप्ट सोर्स कोड के एक्सेक्यूशन को स्टॉप करने के लिए आउटपुट में एचटीएमएल, जावास्क्रिप्ट और सीएसएस को एस्केप करें।
  • HTML escaping – इस मेथड में स्पेशल करैक्टर को एचटीएमएल एंटिटीज़ में कन्वर्ट करने के लिए PHP में htmlspecialchars() जैसे फ़ंक्शन को अप्लाई किया जाता है।
  • JavaScript Escaping – इस प्रोसेस में जावास्क्रिप्ट प्रोग्रामिंग में डायनामिक वैल्यूज को इनपुट या एंटर करते समय उस डेटा को एस्केप करने के लिए json_encode() जैसे फ़ंक्शन को अप्लाई किया है।

Example of preventing XSS attacks in PHP.

<?php

// let createa a program to output escaping in PHP to prevent XSS attack

$visitor_input = $_POST[‘visitor_input’];

echo htmlspecialchars($visitor_input, ENT_QUOTES, ‘UTF-8’);

?>

यहाँ यह फिक्स करता है कि कोई भी वेब विजिटर इनपुट सिक्योर फॉर्मेट में  टेक्स्ट के रूप में प्रस्तुत किया जाए, न कि एक्सेक्यूशन कम्पेटिबल एचटीएमएल या जावास्क्रिप्ट के सोर्स कोड फॉर्मेट के रूप में।

Content Security Policy (CSP) concept in PHP.

CSP फीचर्स वेब विज़िटर को यह परमिशन प्रोवाइड करता है की सिस्टम में होने वाले XSS अटैक करने में हेल्प करता है कि वेब कंटेंट को एक्स्प्लोर करते समय कौन से सोर्स रिलाएबल हैं. जैसे, रिलाएबल वेब स्क्रिप्ट सोर्स यह मौजूदा वेब एनवायरनमेंट में  अनधिकृत वेब स्क्रिप्ट को रन करने से स्टॉप करता है।

Example of a Secure header.

Content-Security-Policy: script-src ‘self’ https://trusted-source.com

यह सिक्योर हैडर में जावास्क्रिप्ट प्रोग्रामिंग को केवल trusted-source.com डोमेन और करंट ओरिजिनल (‘self’) से लोड करने पर रिस्ट्रिक्ट कर देता है।

Cleanse user input in web systems.

अपने वेब सिस्टम में वेब विजिटर यूजर इनपुट जैसे, रैंडम यूजर कमेंट, यूजर फील फ़ॉर्म डेटा को बैकेंड सर्वर में एक्सेप्ट करते समय, किसी भी पोटेंशियल आर्डर में हार्मफुल वेब स्क्रिप्ट को रिमूव करने के लिए यूजर इनपुट को क्लीन करें।

वेब सिस्टम को एक्टिवट रखने के लिए HTMLPurifier पीएचपी या DOMPurify जावास्क्रिप्ट जैसी बिल्ट लाइब्रेरी एचटीएमएल कंटेंट इन्फर्मेशन को क्लीन और एक्टिव करने में हेल्प करती हैं।

Use a framework with built-in security in your web system.

वर्त्तमान समय में मॉडर्न वेब फ़्रेमवर्क जैसे, लारवेल डीजागो, रियेक्ट, अगुलर जैसे आटोमेटिक आर्डर में आउटपुट से बच निकलते हैं, जो की वेब सिस्टम में XSS वुलनेराबिलिटीज़ रिस्क को कम करता है।

Cross-site request forgery (CSRF) concept in PHP.

What is the CSRF concept in PHP?

वेब एप्लीकेशन क्रॉस-साइट रिक्वेस्ट फोर्जरी (CSRF) तब परफॉर्म होती है, जब कोई मालिसियस इंटरनेट यूजर किसी ऑथेंटिकेट यूजर को किसी ऐसी वेबसाइट पर इंटेंशनली टास्क करने के लिए फाॅर्स करता है. जहाँ यूजर पहले से लॉग इन मोड में है जैसे, अकॉउंट सेटिंग मॉडिफाई करना, फण्ड ट्रांसफर करना आदि के लिए फाॅर्स करना है, जिसमे की वेब विजिटर का वेब ब्राउज़र रिक्वेस्ट में आटोमेटिक फॉर्मेट में  वेब यूजर की क्रेडेंशियल (कुकीज़) इन्क्लुड करता है. जिससे की अटैकर ऑथेंटिकेट यूजर के रूप में अन वांटेड एक्शन कर सकते हैं।

How to protect against CSRF attacks in PHP.

Use a PHP CSRF token.

अपने वेब एप्लीकेशन या वेबसाइट में प्रत्येक फ़ॉर्म या अजाक्स रिक्वेस्ट के लिए एक यूनिक CSRF टोकन जनरेट करें और फिक्स करें कि प्रत्येक सिस्टम रिक्वेस्ट में यह टोकन इन्क्लुड हो।

वेब सर्वर हर यूजर के लॉगिन सेशन में स्टोर टोकन के अगेंस्ट टोकन को चेक करे। यदि ये टोकन आपस में मेल नहीं खाते हैं, तो सिस्टम में रिक्वेस्ट को रिजेक्ट कर दिया जाता है

Example of generating a CSRF token in PHP.

<?php

// lete begain session and generate a CSRF token

session_start();

if (empty($web_SESSION[‘csrf_token’])) {

    $web_SESSION[‘csrf_token’] = bin2hex(random_bytes(32)); // here it Generate a secure random token for web request

}

?>

Example of including a token in an HTML form.

<form method=”POST” action=”process_form.php”>

    <input type=”hidden” emp_name=”csrf_token” value=”<?php echo $web_SESSION[‘csrf_token’]; ?>”>

    <!– let add sme Other form fields –>

    <button type=”submit”>Submit value</button>

</form>

Example of verifying a CSRF token in a PHP program.

<?php

// let craete the form handling code

session_start();

if ($_SERVER[‘REQUEST_METHOD’] === ‘POST’) {

    if (isset($_POST[‘csrf_token’]) && $_POST[‘csrf_token’] === $_SESSION[‘csrf_token’]) {

        // here it Process the form safely to verify csrf tocken

    } else {

        // it check the unauthorized CSRF token – reject the user request

        die(“unauthorized CSRF token”);

    }

}

?>

Explanation of verifying a CSRF token.

  • यहाँ इस प्रोग्राम में CSRF टोकन यूजर सेशन में स्टोर होता है, और इसे वेबस्क्रिप्ट में एक छिपे हुए इनपुट फ़ील्ड के रूप में फ़ॉर्म में ऐड किया जाता है।
  • जब ऑनलाइन वेब विजिटर के द्वारा फ़ॉर्म को सबमिट किया जाता है, तो वेब सर्वर चेक करता है कि मौजूदा सिस्टम में सबमिट किया गया यूजर टोकन सेशन में स्टोर टोकन से मेल खाता है या नहीं है। यदि ये मौजूदा टोकन से मेल नहीं खाते हैं, तो वेब रिक्वेस्ट को रिजेक्ट कर दिया जाता है।

Using SameSite cookies in PHP.

मल्टीप्ल क्लाइंट वेब ब्राउज़रों को क्रॉस-ओरिजिन यूजर रिक्वेस्ट के साथ कुकीज़ सेंड प्रोसेस स्टॉप करने के लिए वेब कुकीज़ में SameSite एट्रीब्यूट्स को अप्लाई करें।

Example of SameSite cookies.

        setcookie(‘session_id’, $session_id, [

            ‘samesite’ => ‘Strict’,

            ‘secure’ => true,  // here it fix it’s sent over HTTPS

            ‘httponly’ => true,  // here it restricts access from JavaScript

        ]);

SameSite cookies can be set to.

  • Strict – इसमें वेब कुकी केवल फर्स्ट-पार्टी रेफ़्रेन्स में सेंड की जाती है. जैसे, क्रॉस-ओरिजिन रिक्वेस्ट के साथ नहीं भेजी जाती है।
  • Loose – इस प्रोसेस में कुकी टॉप-लेवल नेविगेशन और GET यूजर रिक्वेस्ट के साथ सेंड की जाती है।
  • None – इसमें वेब कुकी सभी वेब विजिटर रिक्वेस्ट के साथ सेंड की जाती है, जब तक वेब विजिटर को किसी क्रॉस-ओरिजिन कुकीज़ की जरूरत न हो, इसे रेकमेंड नहीं किया जाता है।

Ensure POST requests for sensitive actions in PHP.

वेब स्क्रिप्ट में किसी भी प्रकार के CSRF अटैक को स्टॉप करने के लिए जरूरी है कि सेंसिटिव सिस्टम एक्टिविटीज जैसे, ऑनलाइन पासवर्ड बदलना, ऑनलाइन भुगतान करना, रिक्वेस्ट केवल POST वेब रिक्वेस्ट के द्वारा ही एक्सेसिबल हों, किसी भी GET रिक्वेस्ट्स के माध्यम से नहीं हो।

Double-Submit Cookies Concept.

यह एक अन्य पॉपुलर डबल-सबमिट कुकी पैटर्न मेथड है। इस प्रोसेस में वेब कुकी और यूजर रिक्वेस्ट पैरामीटर, दोनों में CSRF टोकन सेंड किया जाता है। वेब सर्वर चेक करता है कि दोनों टोकन वैल्यू आपस में मेल खाते हैं या नहीं है।

यहाँ यह मेथड प्रॉपर वर्क करती है, लेकिन फ़ॉर्म में CSRF टोकन का यूज़ करना है, सामान्यता अधिक सिक्योर या रिलाएबल होता है।

Combining both XSS and CSRF protection in PHP.

  • किसी भी डेवलप्ड वेब एप्प्स या वेबसाइट में सिक्योर कोडिंग कांसेप्ट को फॉलो कर XSS और CSRF दोनों रिस्क को कम किया जा सकता है.
  • वेबसाइट या एप्प्स में XSS अटैक को स्टॉप करने के लिए वेब विजिटर इनपुट को हमेशा सैनिटाइज़ और एस्केप करें।
  • वेबसाइट या एप्प्स में CSRF अटैक को स्टॉप करने के लिए फ़ॉर्म और अजाक्स रिक्वेस्ट  में CSRF टोकन को अप्लाई करें।
  • वेब सिस्टम या सर्वर में XSS अटैक सिक्योरिटी के लिए Content-Security-Policy जैसे सिक्योर HTTP हेडर प्रोसेस को यूज़ करें।
  • वेबसाइट में CSRF से सिक्योरिटी में हेल्प के लिए SameSite कुकी ऐट्रिब्यूट्स को अप्लाई करें।

A summary of XSS protection and CSRF protection in PHP.

PHP XSS protection features.

  • Escape output – यह मेथड सेशन में यूजर इनपुट को कोड के बदले डेटा वैल्यू PHP में htmlspecialchars() फंक्शन और अन्य प्रोग्रामिंग लैंग्वेजेज में इक्वल मेथड को यूज़ करें।
  • Content Security Policy (CSP) – वेब एप्प या वेबसाइट में वेब स्क्रिप्ट को कहाँ से कोन लोड कर सकता है, इस प्रोसेस को लिमिट करने के लिए एक CSP मेथड को अप्लाई करें।
  • Sanitize input – लाइव वेब सेशन में यूजर द्वारा प्रोवाइड किए गए एचटीएमएल इनपुट को क्लीन करने के लिए HTMLPurifier या DOMPurify जैसी बिल्ट-इन लाइब्रेरीज़ का यूज़ करें।
  • Use a secure framework – इस थ्रेट्स या वेब अटैक से बचने के लिए लारवेल, रियेक्ट और अगुलर जैसे मॉडर्न एडवांस्ड वेब फ़्रेमवर्क का यूज़ करे, जो ऑनलाइन बैकेंड सिस्टम में कई XSS रिस्क को आटोमेटिक आर्डर में मैनेज करते हैं।

CSRF protection concepts in PHP.

  • Use CSRF tokens – अपने वेबसाइट में डिज़ाइन एचटीएमएल फ़ॉर्म में एक यूनिक CSRF टोकन को ऐड करें और उन्हें बैकेंड में सर्वर-साइड पर वेलिडेट करें।
  • SameSite cookies – अपने वेब सिस्टम में कुकीज़ पर SameSite एट्रिब्यूट को सेट करें, ताकि उन्हें क्रॉस-ओरिजिन सिस्टम रिक्वेस्ट के साथ सेंड किए जाने से रोका जा सके।
  • Use POST for sensitive actions – पहले तय करें कि सेंसिटिव एक्शन के लिए GET पीएचपी मेथड के बजाय POST मेथड रिक्वेस्ट को अप्लाई करे।
  • Validate requests – यूजर डेटा को मॉडिफाई करने वाले सिस्टम रिक्वेस्ट के सोर्स और मेथड को हमेशा वेलिडेट करें।

Leave a Reply