कैसे बेहतर सुरक्षा के लिए अपने PHP कठोर करने के लिए

कई साइटों के बीच PHP का व्यापक रूप से उपयोग किया जाता है & अनुप्रयोगों, लेकिन सुरक्षा के लिए कठोर किया जाना चाहिए। अपनी PHP कॉन्फ़िगरेशन फ़ाइल को सुरक्षित करने के लिए यहां कुछ उन्नत युक्तियां दी गई हैं.


PHP को सख्त कैसे करें

PHP आज तक उपयोग में सबसे लोकप्रिय वेब बैक-एंड प्रोग्रामिंग भाषा है। आज तक बैकएंड वाली 80% साइटें PHP को लागू करें। वर्डप्रेस, जूमला, और ड्रुपल सभी इसके द्वारा समर्थित हैं। दुर्भाग्य से PHP हैकिंग प्रयासों के लिए एक लोकप्रिय लक्ष्य बन गया है, यही कारण है कि इसके कॉन्फ़िगरेशन को सुरक्षित करना महत्वपूर्ण है। अपने PHP कॉन्फ़िगरेशन को कठोर बनाने और हैकिंग भेद्यताओं से बचाने में मदद करने के लिए इन सरल चरणों का पालन करें.

PHP विन्यास फाइल का पता लगाएँ

PHP के लिए कॉन्फ़िगरेशन फ़ाइल का नाम php.ini है, जिसे आपको संपादित करना होगा। फ़ाइल का स्थान आपकी होस्टिंग कंपनी और सर्वर प्रकार के आधार पर भिन्न होता है.

साझा होस्टिंग के साथ संपादित करें

यदि आप सुनिश्चित नहीं हैं कि आपकी php.ini फ़ाइल कहाँ स्थित है, तो अपने होस्टिंग प्रदाता से संपर्क करें। कुछ प्रदाताओं की आवश्यकता है कि आप वेब रूट में “.htaccess” फ़ाइल के भीतर PHP सेटिंग्स रखें। यदि यह स्थिति है, तो PHP सेटिंग्स को “php_value Name value” प्रारूप में प्रति पंक्ति एक जोड़ा जाना चाहिए। ध्यान रखें कि आपका होस्टिंग प्रदाता कुछ सेटिंग्स को संशोधित होने से रोक सकता है.

एक VPS या समर्पित सर्वर के साथ संपादित करें

वेब होस्ट मैनेजर (WHM) एक साधारण उपयोगकर्ता इंटरफ़ेस प्रदान करके PHP विन्यास फाइल को संपादित करने की प्रक्रिया को सरल बनाता है। बस WHM में “सेवा कॉन्फ़िगरेशन” अनुभाग ढूंढें और “PHP कॉन्फ़िगरेशन संपादक” पर क्लिक करें। दिखाई देने वाले पृष्ठ पर, “उन्नत मोड” चुनें.

PHP विन्यास संपादक

यदि आप WHM जैसे नियंत्रण कक्ष का उपयोग नहीं कर रहे हैं, तो आपको सीधे php.ini को खोलना और संपादित करना होगा। Php.ini का स्थान आपके सर्वर के ऑपरेटिंग सिस्टम के आधार पर अलग-अलग होगा। कई लिनक्स सिस्टम फ़ाइल को “/etc/php.ini” पथ पर रखते हैं। आप कमांड लाइन के माध्यम से इसके स्थान की पुष्टि कर सकते हैं। SSH के माध्यम से सर्वर में प्रवेश करके शुरू करें (निर्देशों के लिए अपने होस्टिंग प्रदाता से संपर्क करें)। एक बार कनेक्ट होने के बाद, कमांड “php –ini” दर्ज करें और एंटर दबाएं। “भरी हुई कॉन्फ़िगरेशन फ़ाइल” शीर्षक वाली लाइन के लिए खोजें और php.ini फ़ाइल पथ पर ध्यान दें.

आप कमांड लाइन के भीतर चलने वाले टेक्स्ट एडिटर का उपयोग करके php.ini को खोल और संपादित कर सकते हैं, जैसे कि लिनक्स के लिए “नैनो”। बस “नैनो /path/to/php.ini” टाइप करें और एंटर दबाएं.
लिनक्स के लिए नैनो

php.ini संरचना

Php.ini के भीतर, प्रत्येक सेटिंग को “सेटिंगनाम = सेटिंग” प्रारूप में अपनी लाइन पर रखा जाता है। अर्धविराम से शुरू होने वाली कोई भी पंक्ति एक टिप्पणी है, इसलिए उन पंक्तियों में से किसी को भी अपडेट न करें.

कॉन्फ़िगरेशन सेटिंग्स संपादित करें

नीचे उन सेटिंग्स की एक सूची दी गई है जिनकी सुरक्षा में सुधार के लिए समीक्षा और अद्यतन किया जाना चाहिए। सेटिंग्स को उनके उद्देश्य के आधार पर नीचे कई खंडों में बांटा गया है.

खंड 1: दूरस्थ कनेक्शन

allow_url_fopen = 0
allow_url_include = 0

दूरस्थ URL खोलने के लिए फ़ोपेन आवरणों की अनुमति न दें। दूरस्थ सामग्री पर हमेशा भरोसा नहीं किया जा सकता है; इन विकल्पों को अक्षम करना यह सुनिश्चित करता है कि फोपेन रैपर केवल स्थानीय सामग्री को लोड कर सकते हैं.

धारा 2: रनटाइम सेटिंग्स

max_input_time = 30
max_execution_time = 30

आदानों को संसाधित करने की अनुमति दी गई अधिकतम समय सीमा, साथ ही एक PHP स्क्रिप्ट को चलाने के लिए अधिकतम समय की सीमा हो सकती है। यहां, दोनों सेटिंग्स को 30 सेकंड की सीमा पर सेट किया गया है। यह सुनिश्चित करता है कि अगर किसी स्क्रिप्ट में समझौता हो जाता है, तो यह इनपुट नहीं पढ़ेगा या विस्तारित अवधि के लिए नहीं चलेगा। एक अच्छी तरह से कोडित स्क्रिप्ट को चलाने के लिए 30 सेकंड से अधिक की आवश्यकता नहीं होनी चाहिए.

memory_limit = 8M

सुनिश्चित करें कि PHP स्क्रिप्ट कभी भी 8MB से अधिक मेमोरी का उपयोग नहीं करती है। यदि किसी स्क्रिप्ट में समझौता किया गया था, तो यह सेटिंग प्रभावी रूप से मेमोरी की मात्रा को सीमित करती है जो स्क्रिप्ट उपयोग कर सकती है.

register_globals = बंद

इस सेटिंग को प्रभावी रूप से अक्षम करने से अनुरोध डेटा को स्वचालित रूप से एक चर के रूप में संग्रहीत किया जा सकता है। वैश्विक चर रजिस्टर करना कई चिंताओं को जन्म देता है; एक उदाहरण यह है कि पर्यावरण चर आसानी से संशोधित किए जा सकते हैं। इन मुद्दों से बचने के लिए, सुनिश्चित करें कि यह सेटिंग बंद है.

expose_php = 0

डिफ़ॉल्ट रूप से, PHP की उपस्थिति और साथ ही इसके संस्करण संख्या को HTTP प्रतिक्रियाओं के एक भाग के रूप में उजागर किया गया है। चूंकि यह सर्वर में अनावश्यक अंतर्दृष्टि प्रदान करता है, इसलिए इसे बंद करना उचित है.

cgi.force_redirect = 1

सुनिश्चित करें कि PHP केवल एक वेब सर्वर पुनर्निर्देशन नियम के माध्यम से चलाया जा सकता है। यह PHP को सीधे कॉल करने से रोकता है, जिससे सुरक्षा में सुधार होता है.

धारा 3: इनपुट डेटा प्रतिबंध

post_max_size = 256K
max_input_vars = 100

हैकर्स वेब डेटा को बड़े पैमाने पर डेटा भेजने की कोशिश कर सकते हैं, जिससे यह ट्रांसफर स्पीड और उपलब्ध सर्वर संसाधनों को कम कर सके। इस प्रकार के हमले के प्रभाव को POST डेटा के अधिकतम आकार को कम करने और अनुरोध डेटा की मात्रा को सीमित करके भी कम किया जा सकता है। ध्यान दें कि “post_max_size” फ़ाइल अपलोड के अधिकतम आकार को भी प्रभावित करता है; यदि आपके एप्लिकेशन में फ़ाइल अपलोड क्षमताएं हैं, तो सुनिश्चित करें कि इस सेटिंग का मान कम से कम “अपलोड_मैक्स_फाइलिज़” जितना बड़ा हो.

धारा 4: त्रुटि से निपटने

display_errors = 0
display_startup_errors = 0

त्रुटि संदेशों को अंतिम उपयोगकर्ता को कभी भी प्रदर्शित नहीं किया जाना चाहिए, क्योंकि संदेशों में अक्सर एप्लिकेशन के कोड और सर्वर के बारे में विस्तृत जानकारी होती है। यह जानकारी संभवतः हैकर्स की सहायता के लिए इस्तेमाल की जा सकती है। इसके बजाय, सर्वर पर एक सुरक्षित फ़ाइल में त्रुटि संदेश लॉग करें.

log_errors = 1
error_log = / home / johndoe / error_log

PHP त्रुटियों को अनुप्रयोग कोड को डीबग करने के साथ-साथ संभावित कमजोरियों की जांच करने के लिए लॉग इन किया जाना चाहिए। यदि आप फ़ाइल प्रबंधक का उपयोग कर रहे हैं जैसे कि cPanel के साथ शामिल, त्रुटि लॉग के लिए एक सुविधाजनक और सुरक्षित स्थान सीधे वेब रूट के बाहर है.

खंड 5: फ़ाइल पहुंच को प्रतिबंधित करें

open_basedir = "/ घर / johndoe / public_html"

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

open_basedir = "/ घर / johndoe / public_html: / var / lib / php / tmp_upload: / var / lib / php / सत्र"

धारा 6: फ़ाइल अपलोड

file_uploads = 0

यदि आपके एप्लिकेशन में उपयोगकर्ताओं के कंप्यूटर से फ़ाइलें अपलोड करने के लिए कार्यक्षमता नहीं है, तो इस PHP सुविधा को पूरी तरह से अक्षम करना उचित है। यह हैकर्स को स्क्रिप्ट को अपलोड करने से रोकने में मदद करता है जो तब एप्लिकेशन में इंजेक्ट किया जा सकता है.

file_uploads = 1
upload_max_filesize = 1M

यदि आपके एप्लिकेशन को फ़ाइल अपलोड क्षमताओं की आवश्यकता है, तो “upload_max_filesize” को यथासंभव छोटे मूल्य पर रखें.

upload_tmp_dir = / var / lib / php / tmp_upload

डिफ़ॉल्ट रूप से, अस्थायी फ़ाइल अपलोड को एक निर्देशिका में रखा जाता है जो सभी सिस्टम उपयोगकर्ताओं द्वारा लिखा जा सकता है। स्थान को अधिक सुरक्षित निर्देशिका में स्विच किया जाना चाहिए। सुनिश्चित करें कि नई निर्देशिका स्थान वेब रूट के भीतर स्थित नहीं है। यदि आप फ़ाइल मैनेजर का उपयोग कर रहे हैं जैसे कि cPanel के साथ शामिल है, तो अपलोड निर्देशिका बनाने के लिए एक आसान और सुरक्षित स्थान सीधे वेब रूट के बाहर है (यानी उसी निर्देशिका जो public_html भीतर स्थित है)। एक अन्य सुरक्षित स्थान “/ var / lib” में PHP निर्देशिका के भीतर निर्देशिका बनाने के लिए है। पथ ऑपरेटिंग सिस्टम पर निर्भर करता है, अर्थात् “/ var / lib / php” या “/ var / lib / php5″। यदि प्रभाव में Open_basedir प्रतिबंध हैं, तो सुनिश्चित करें कि अस्थायी अपलोड निर्देशिका open_basedir श्वेतसूची में शामिल है.

धारा 7: सत्र सुरक्षा

व्यक्तिगत उपयोगकर्ताओं के लिए कई अनुरोधों की जानकारी को संरक्षित करने के लिए सत्र का उपयोग किया जाता है। वास्तविक जानकारी सर्वर पर संग्रहीत की जाती है, और एक कुकी (या, कम सुरक्षित रूप से, HTTP अनुरोध डेटा) एक सत्र आईडी युक्त उपयोगकर्ताओं को मान्य करने के लिए उपयोग किया जाता है। एक वेब अनुप्रयोग में प्रमाणीकरण सहित प्रयोजनों के लिए सत्र का उपयोग किया जाता है, जो एक कारण है कि इसकी सुरक्षा इतनी महत्वपूर्ण है। सत्र अवरोधन के जोखिम को कम करने में मदद के लिए निम्नलिखित सेटिंग्स को अपडेट किया जा सकता है.

session.use_strict_mode = 1

यदि ब्राउजर पहले से गैर-पंजीकृत आईडी भेजता है तो एक नया सत्र आईडी बनाएं। यह सत्र निर्धारण नामक एक हमले को रोकने में मदद करता है.

session.cookie_httponly = 1

सत्र कुकी को केवल HTTP अनुरोध से एक्सेस करने की अनुमति दें, और अन्य स्रोतों जैसे कि जावास्क्रिप्ट से नहीं। यह XSS हमले नामक हमले को रोकने में मदद करता है.

session.use_cookies = 1
session.use_only_cookies = 1
session.use_trans_sid = 0

एक URL पैरामीटर के रूप में भेजने के बजाय एक कुकी में सत्र आईडी सहेजें। यह सत्र निर्धारण हमलों को रोकने के द्वारा उपयोगकर्ता के सत्र को सुरक्षित रखने में मदद करता है.

session.name = custom_session_id

कुकीज़ कुंजी-मूल्य प्रारूप में अपनी जानकारी संग्रहीत करती हैं। सत्र आईडी को संग्रहीत करने वाले कुकी के डिफ़ॉल्ट कुंजी नाम को अपडेट करना उचित है। कस्टम मूल्य के साथ “custom_session_id” अपडेट करें.

session.cookie_secure = 1

यदि आपका वेब एप्लिकेशन सुरक्षा के लिए HTTPS प्रोटोकॉल पर चलता है, तो इस सेटिंग को सेशन आईडी युक्त कुकीज़ को एक सुरक्षित कनेक्शन पर एक्सेस करने के लिए बाध्य करने के लिए सक्षम करें।.

session.referer_check = example.com

सत्र डेटा तक पहुँच की अनुमति देने के लिए यह निर्धारित करने के लिए कि अनुरोध कहाँ से आया है, जाँच करें। यदि किसी स्क्रिप्ट को बाहरी स्रोत से लोड किया गया है, तो सत्र जानकारी को एक्सेस करने से रोकने के लिए अपने एप्लिकेशन के डोमेन नाम पर इस सेटिंग मान को अपडेट करें.

session.save_path = "/ Var / lib / php / सत्र"

डिफ़ॉल्ट सत्र फ़ाइल सहेजें पथ सभी सिस्टम उपयोगकर्ताओं द्वारा लेखन योग्य है। स्थान को अधिक सुरक्षित निर्देशिका में स्विच किया जाना चाहिए। सुनिश्चित करें कि नई निर्देशिका स्थान वेब रूट के भीतर स्थित नहीं है। यदि आप एक फ़ाइल प्रबंधक का उपयोग कर रहे हैं जैसे कि cPanel के साथ शामिल है, तो सत्र निर्देशिका बनाने का एक आसान स्थान सीधे वेब रूट के बाहर है (यानी उसी निर्देशिका जो public_html भीतर स्थित है)। एक अन्य सुरक्षित स्थान “/ var / lib” में PHP निर्देशिका के भीतर निर्देशिका बनाने के लिए है। पथ ऑपरेटिंग सिस्टम पर निर्भर करता है, अर्थात् “/ var / lib / php” या “/ var / lib / php5″। यदि प्रभाव में Open_badeir प्रतिबंध हैं, तो सुनिश्चित करें कि सत्र सेव पथ open_basedir श्वेतसूची में शामिल है.

session.hash_function = sha512

SHA-512 डिफ़ॉल्ट MD5 हैश फ़ंक्शन की तुलना में सत्र आईडी बनाने के लिए एक अधिक सुरक्षित हैशिंग एल्गोरिथ्म है। यह एल्गोरिथ्म PHP संस्करण 5.3+ में उपलब्ध है। यदि आप PHP का कम संस्करण चला रहे हैं, तो इसके बजाय SHA1 हैश एल्गोरिथ्म का उपयोग करें। ऐसा करने के लिए, “session.hash_function = 1” सेट करें.

session.bug_compat_42 = 0
session.bug_compat_warn = 0

इन सेटिंग्स को अक्षम करने से यह सुनिश्चित होगा कि सत्र चर वैश्विक रूप से आरंभिक नहीं हो सकते हैं, जिससे सुरक्षा में सुधार होता है.

निष्क्रिय कार्य अक्षम करें

अक्षम_फंक्शंस = ini_set, php_uname, getmyuid, getmypid, passthru, leak, सुनो, diskfreespace, tmpfile, link, ign_user_abord, shell_exec, dl, set_time_limit, exec, system, highlight_file, source; show। शो, स्रोत, शो। posix_geteuid, posix_getgid, posix_getgrgid, posix_getgrnam, posix_getgroups, posix_getlogin, posix_getpgid, posix_getpgrp, posix_getpid, POSIX, _getppid, posix_getpwnam, posix_getpwuid, posix_getrlimit, posix_getsid, posix_getuid, posix_isatty, posix_kill, posix_mkfifo, posix_setegid, posix_seteuid, posix_setgid, posix_setpgid, posix_setsid, posix_setuid, posix_times, posix_ttyname, posix_uname, proc_open, proc_close, proc_get_status, proc_nice, proc_terminate, phpinfo, popen, curl_exec, curl_multi_exec, parse_ini_file, allow_url_fopen, allow_url_include, pcntl_exec, chgrp, chmod, chown, lchgrp, lchown, putenv

कई PHP फ़ंक्शन वेब एप्लिकेशन हैक के लिए खुले दरवाजे प्रदान कर सकते हैं यदि सावधानी से उपयोग नहीं किया जाता है। उदाहरण के लिए, इन कार्यों में से कई के लिए अनुचित रूप से मान्य इनपुट भेजने से सुरक्षा संबंधी समस्याएं उत्पन्न होती हैं। इन कार्यों को पूरी तरह से अक्षम करना समस्या का एक सरल और प्रभावी समाधान है। हालाँकि, यदि आपके एप्लिकेशन को सूचीबद्ध किसी भी फ़ंक्शन की आवश्यकता है, तो उसे सूची से हटा दें.

साबुन कैश

साबुनवेदल_चैचे_दिर = / वर / परिवाद / php / साबुन_चैके

फ़ाइल अपलोड और सत्र डेटा के साथ, SOAP कैश डेटा को डिफ़ॉल्ट अस्थायी निर्देशिका में संग्रहीत नहीं किया जाना चाहिए। इसे और अधिक सुरक्षित निर्देशिका में सेट करें.

PHP को पुनरारंभ करें

जब आप php.ini फ़ाइल में परिवर्तन करते हैं, तो आपको वेब सर्वर को पुनरारंभ करना होगा। WHM फ़ाइल को संपादित करने के बाद सर्वर को पुनरारंभ करने के लिए एक बटन प्रदान करता है। यदि आप WHM जैसे एक नियंत्रण कक्ष का उपयोग नहीं कर रहे हैं, तो आपको कमांड-लाइन के माध्यम से अपने सर्वर को पुनरारंभ करना होगा। अपाचे के लिए, कमांड “सुडो एपाचेक्टल ग्रेसफुल” दर्ज करें और एंटर दबाएं.

निष्कर्ष

इन सेटिंग्स को अपडेट करने से, आपके PHP वातावरण हैक प्रयासों से संरक्षित रहने में आगे है। अपने व्यवसाय की प्रतिष्ठा की रक्षा के लिए हैकर्स से अपने PHP वातावरण को सुरक्षित रखना एक महत्वपूर्ण कदम है। हालांकि, ध्यान रखें कि खराब कोडित एप्लिकेशन हमेशा हैक के लिए एक खुला दरवाजा होता है, यहां तक ​​कि कठोर PHP कॉन्फ़िगरेशन के साथ भी। अपने कॉन्फ़िगरेशन को कठोर रखकर शुरू करें, और वहां से हमेशा सुरक्षित एप्लिकेशन कोड लिखें.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map