मैं PHP वेबसाइट को और अधिक सुरक्षित कैसे बना सकता हूँ?


जवाब 1:

जब एप्लिकेशन सुरक्षा की बात आती है, तो अपने हार्डवेयर और प्लेटफ़ॉर्म को सुरक्षित करने के अलावा, आपको अपना कोड सुरक्षित रूप से लिखने की भी आवश्यकता होती है। यहां सबसे अच्छी आदतें हैं जो एक प्रोग्रामर को अपने आवेदन को हमले से बचाने के लिए विकसित कर सकती हैं:

इनपुट डेटा सत्यापन

: अपने एप्लिकेशन को डिज़ाइन करते समय, आपको अपने ऐप को खराब इनपुट से बचाने के लिए प्रयास करना चाहिए। उपयोगकर्ता इनपुट पर विश्वास न करें। यद्यपि आपका ऐप अच्छे लोगों के लिए है, लेकिन हमेशा एक मौका होता है कि कुछ बुरे उपयोगकर्ता खराब इनपुट दर्ज करके आपके ऐप पर हमला करने की कोशिश करेंगे। यदि आप हमेशा आने वाले डेटा को मान्य और फ़िल्टर करते हैं, तो आप एक सुरक्षित एप्लिकेशन बना सकते हैं। हमेशा अपने PHP कोड में डेटा को मान्य करें। यदि आप उपयोगकर्ता इनपुट को मान्य करने के लिए जावास्क्रिप्ट का उपयोग कर रहे हैं, तो हमेशा एक मौका होता है कि उपयोगकर्ता ने अपने ब्राउज़र में जावास्क्रिप्ट को बंद कर दिया हो। इस स्थिति में आपका ऐप इनपुट को मान्य नहीं कर पाएगा। जावास्क्रिप्ट में मान्य ठीक है, लेकिन इस प्रकार की समस्याओं से बचाव के लिए आपको PHP में भी डेटा को फिर से सत्यापित करना चाहिए।

XSS हमलों के खिलाफ रखवाली:

क्रॉस-साइट स्क्रिप्टिंग अटैक (XSS अटैक) कमजोर वेब पेजों में कोड इंजेक्शन के आधार पर हमला है। यह खतरा अनियंत्रित इनपुट डेटा को स्वीकार करने और ब्राउज़र में दिखाने का परिणाम है।

SQL इंजेक्शन हमलों को रोकने

अपने डेटाबेस प्रश्नों को करने के लिए, आपको पीडीओ का उपयोग करना चाहिए। पैरामीटर किए गए प्रश्नों और तैयार किए गए बयानों के साथ, आप SQL इंजेक्शन को रोक सकते हैं।

निम्नलिखित उदाहरण पर एक नज़र डालें:

  1. तैयार ($ sql); $ stmt-> निष्पादित (सरणी (": नाम" => $ नाम, ": आयु" => $ आयु));

उपरोक्त कोड में हम नामित पैरामीटर प्रदान करते हैं

: नाम

तथा

: उम्र

सेवा

तैयार()

, जो डेटाबेस इंजन को क्वेरी को पूर्व-संकलित करने और बाद में नामित मापदंडों के मानों को संलग्न करने के लिए सूचित करता है। जब बुलाओ

निष्पादित()

बनाया जाता है, क्वेरी को नामित मापदंडों के वास्तविक मूल्यों के साथ निष्पादित किया जाता है। यदि आप इस तरह से कोड करते हैं, तो हमलावर दुर्भावनापूर्ण SQL को इंजेक्ट नहीं कर सकता क्योंकि क्वेरी पहले से ही संकलित है और आपका डेटाबेस सुरक्षित रहेगा।

फ़ाइल सिस्टम की सुरक्षा करना

एक डेवलपर के रूप में आपको हमेशा अपना कोड इस तरह से लिखना चाहिए कि आपका कोई भी ऑपरेशन आपके फाइल सिस्टम को खतरे में न डाले। निम्नलिखित PHP पर विचार करें जो एक उपयोगकर्ता द्वारा दिए गए पैरामीटर के अनुसार एक फ़ाइल डाउनलोड करता है:

स्क्रिप्ट बहुत खतरनाक है क्योंकि यह किसी भी निर्देशिका से फ़ाइलों की सेवा कर सकती है जो इसे सुलभ है, जैसे कि सत्र निर्देशिका और सिस्टम निर्देशिका। समाधान यह सुनिश्चित करने के लिए है कि स्क्रिप्ट मनमानी निर्देशिका से फ़ाइलों तक पहुंचने की कोशिश नहीं करती है।

सत्र डेटा की सुरक्षा करना

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

अपने सत्र डेटा को सुरक्षित रखने का एक अच्छा तरीका सत्र में संग्रहीत जानकारी को एन्क्रिप्ट करना है। यह समस्या को पूरी तरह से हल नहीं करता है क्योंकि एन्क्रिप्टेड डेटा पूरी तरह से सुरक्षित नहीं है, लेकिन कम से कम जानकारी पढ़ने योग्य नहीं है। आपको अपने सत्र डेटा को कहीं और संग्रहीत करने पर भी विचार करना चाहिए, जैसे डेटाबेस। PHP नामक एक विधि प्रदान करता है

session_set_save_handler ()

जिसका उपयोग सत्र में डेटा को अपने तरीके से जारी रखने के लिए किया जा सकता है।

PHP 5.4 के रूप में आप एक प्रकार का ऑब्जेक्ट पास कर सकते हैं

SessionHandlerInterface

सेवा

session_set_save_handler ()

। लागू करके कस्टम सत्र दृढ़ता को लागू करने के बारे में जानने के लिए PHP दस्तावेज़ीकरण देखें

SessionHandlerInterface

उचित त्रुटि से निपटने

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

उत्पादन मोड में हमें बंद करने की आवश्यकता है

display_errors

तथा

display_start_up_errors

समायोजन।

त्रुटि की सूचना देना

तथा

log_errors

ऐसा होना चाहिए ताकि हम अंत उपयोगकर्ताओं से छिपाते समय त्रुटियों को लॉग कर सकें।

आप कस्टम त्रुटि संचालकों को परिभाषित करने के लिए set_error_handler का उपयोग कर सकते हैं। हालाँकि, इसकी सीमाएँ हैं। कस्टम त्रुटि हैंडलर PHP की मानक त्रुटि हैंडलिंग तंत्र को बायपास करता है। यह त्रुटियों को पकड़ नहीं सकता है

E_CORE_ERROR

,

E_STRICT

या

E_COMPILER_ERROR

उसी फ़ाइल में त्रुटि हैंडलर को परिभाषित किया गया है। इसके अलावा, यह उन त्रुटियों को संभालने में विफल होगा जो हैंडलर के भीतर ही हो सकती हैं।

त्रुटियों को प्रभावी ढंग से संभालने के लिए आपको प्रयास / कैच ब्लॉक के माध्यम से अपवाद संचालन करना चाहिए। अपवादों का प्रतिनिधित्व किया जाता है

अपवाद

वर्ग और उसके उपवर्ग। यदि कोई त्रुटि ब्लॉक के अंदर होती है, तो आप एक अपवाद को फेंक सकते हैं और इसे पकड़ने वाले ब्लॉक में संसाधित कर सकते हैं।


जवाब 2:

मुझे लगता है कि आप जानना चाहते हैं "PHP में सुरक्षित वेबसाइट कैसे विकसित करें"।

इसके लिए सबसे अच्छा समाधान विकास के लिए फ्रेमवर्क का उपयोग करना है क्योंकि वे कई चीजों का ध्यान रखते हैं जैसे उपयोगकर्ता इनपुट, सीएसआरएफ सुरक्षा इत्यादि की सफाई करना। आप फ्रेमवर्क का उपयोग कर सकते हैं जैसे

CodeIgniter वेब फ्रेमवर्क

या

वेब कारीगरों के लिए PHP फ्रेमवर्क

या कोई अन्य,

यदि आप किसी ढांचे का उपयोग नहीं कर रहे हैं, तो यहां कुछ चीजें हैं जो आपको करनी चाहिए,

जानकारी के लिए और अधिक, कृपया के माध्यम से जाना

सुरक्षा - मैनुअल

  • सुनिश्चित करें कि आप किसी भी उपयोगकर्ता इनपुट को साफ कर रहे हैं।
  • सुनिश्चित करें कि आप किसी भी उपयोगकर्ता इनपुट को सत्यापित और सत्यापित कर रहे हैं।

फाइलसिस्टम सुरक्षा

  • किसी भी फाइल की समीक्षा करें जो यह सुनिश्चित करने के लिए विश्व स्तर पर पठनीय है कि वे उन सभी उपयोगकर्ताओं द्वारा पढ़ने के लिए सुरक्षित हैं जिनके पास उस फाइल सिस्टम तक पहुंच है

अपाचे मॉड्यूल के रूप में स्थापित

  • जब अपाचे मॉड्यूल के रूप में स्थापित किया जाता है तो यह अपाचे की उपयोगकर्ता अनुमतियों को विरासत में देता है, अपाचे उपयोगकर्ता को रूट करने की अनुमति देना बहुत खतरनाक हो सकता है

छिपा हुआ PHP - मैनुअल

  • छिपाएँ php - अपने php.ini में बंद expose_php सेट करें

डेटाबेस सुरक्षा

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

Register_globals का उपयोग करना

  • Php Ini या htaccess के माध्यम से register_globals अक्षम करें।

PHP: त्रुटि रिपोर्टिंग - मैनुअल

  • उत्पादन परिनियोजित करते समय, त्रुटि_ रिपोर्टिंग () को 0 पर सेट करके पूरी तरह से त्रुटि की सूचना दें, या अपने कोड को जांचने से बचाने के लिए php.ini विकल्प display_errors का उपयोग करके त्रुटि प्रदर्शन को बंद करें।

वैसे भी उपरोक्त लिंक और php मैनुअल के माध्यम से जाने की कोशिश करें और कुछ Google खोज करने की कोशिश करें जो आपको कई लेख मिलेंगे।

लेकिन उत्पादन के लिए सबसे अच्छा तरीका कुछ फ्रैमवर्क्स के लिए जाना है यदि समाधान अनुमति देता है।

सादर,

समभाव


जवाब 3:

एक PHP प्रोग्रामर के रूप में, आपकी पहली चिंता एक वेब एप्लिकेशन बनाने की है जो सुरक्षित है और किसी भी अनजाने में से बचने के लिए जो एक वेब एप्लिकेशन में सुरक्षा छेद को रेंगने की अनुमति देता है।

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

यह लेख आपको सभी दोषों और दोषों का पता लगाने और आपको स्थितियों से बाहर निकालने के लिए सभी सर्वोत्तम और संभव समाधान देने में आपकी सहायता करने के लिए यहाँ है:

शीर्ष 7 PHP सुरक्षा Blunders और आप उन्हें क्या कर सकते हैं


जवाब 4:

आप वेब ऐप सिक्योरिटी, पेन्टिंग आदि के बारे में अधिक जान सकते हैं। शुरू करने का एक अच्छा तरीका "द वेब एप्लीकेशन सिक्योरिटी हैंडबुक" पुस्तक होगी। अपने आप को कमजोरियों का फायदा उठाने में अनुभव के लिए आप DVWA (डेमन वल्नरेबल वेब एप्लिकेशन) डाउनलोड कर सकते हैं। एक बार जब आप किसी भी साइट पर संभावित कमजोरियों से अवगत हो जाते हैं, तो आप अंततः एक सुरक्षित ऐप डेवलपर बन सकते हैं।

याद है। ये सब एक लागत के साथ आता है, और यह धैर्य है!


जवाब 5:

1) उचित त्रुटि रिपोर्टिंग का उपयोग करें

2) php की ख़राब सुविधाओं को अक्षम करें

अगर (खाली ($ _POST ['उपयोगकर्ता नाम') && $ _POST ['उपयोगकर्ता नाम'] == 'परीक्षण'

&&! खाली ($ _POST ['पासवर्ड']) && $ _POST ['पासवर्ड'] == / test2

)

{

$ पहुँच

= सत्य;

}

3) मान्य इनपुट

वर्णों से बचने के लिए इनपुट n को मान्य करें, इनपुट की सुरक्षा करने का एक और शानदार तरीका यह है कि इसे मान्य किया जाए।

4) SQL इंजेक्शन से बचाव

$ उपयोगकर्ता नाम

= mysqli_real_escape_string ($ GET ['उपयोगकर्ता नाम'));

mysql_query ("चयन करें * tbl_members से जहां उपयोगकर्ता नाम = '"। $ उपयोगकर्ता नाम। "" ");

5) जादू उद्धरण अक्षम करना:

  1. ; जादू उद्धरण ;; आने वाले GET / POST / कुकी डेटा के लिए मैजिक कोट्स। Sad_quotes_gpc = Off; रनटाइम-जनरेट किए गए डेटा के लिए मैजिक कोट्स, उदाहरण के लिए SQL से डेटा, एग्जीक्यूटिव (), आदि से_नोट्स_ट्रंट = ऑफ; साइबेस-शैली के जादुई उद्धरणों का उपयोग करें (\ 'के बजाय' 'के साथ' बच)। Magic_quotes_sybase 1