IhsAdke.com

PHP और MySQL में एक सुरक्षित लॉगिन स्क्रिप्ट कैसे बनाएँ

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

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

दृष्टिकोण डेटा फ़िल्टरिंग, क्रिप्टोग्राफी, और अन्य तरीकों के मिश्रण का उपयोग करना है जो बुरे लोगों के जीवन को अधिक जटिल बनाते हैं।

हम हमेशा इस स्क्रिप्ट को बेहतर बनाने की कोशिश कर रहे हैं। इस कोड का सबसे वर्तमान संस्करण यहां उपलब्ध है GitHub. आपके द्वारा डाउनलोड किए गए कोड और इस आलेख में उपयोग किए गए कोड के बीच कुछ अंतर हो सकते हैं। यह जानना भी महत्वपूर्ण है कि HTML पृष्ठों की उपस्थिति हमारी प्राथमिकता नहीं थी

यह भी ध्यान रखें कि हम उन फाइलों पर PHP टैब बंद नहीं करते हैं जिनमें केवल PHP कोड शामिल हैं I हम सबसे कोडिंग स्वरूपण सिफारिशों के लिए आगे देख रहे हैं

और अंत में, आपको मुख्य निर्देशिका अनुप्रयोग में कई निर्देशिकाओं में HTML फ़ाइलों के अलावा अन्य सभी अनुप्रयोग बनाने की आवश्यकता है। सही निर्देशिका संरचना प्राप्त करने का सबसे आसान तरीका ऊपर दिए गए लिंक का पालन करके नवीनतम कोड डाउनलोड करना है।

अपने खुद के कार्यान्वयन के आधार के रूप में इस एप्लिकेशन का उपयोग करने के लिए स्वतंत्र महसूस करें, लेकिन यह कोडिंग के लिए एक आदर्श टेम्पलेट के रूप में काम नहीं करता है!



आवश्यक सामग्री

चूंकि हम myqli_ * PHP वर्ग सेट का उपयोग हमारे mySQL डाटाबेस तक पहुंचने के लिए करेंगे, आपको निम्न PHP और mySQL संस्करणों की आवश्यकता होगी:

  • * PHP संस्करण 5.3 या अधिक
  • * MySQL संस्करण 4.1.3 या उच्चतर

आपको अपने पृष्ठों को होस्ट करने के लिए PHP का उपयोग करने के लिए कॉन्फ़िगर करने वाले सर्वर की आवश्यकता होगी। सबसे अधिक संभावना है कि यह आपके वेब साइट होस्टिंग की एक ही प्रदाता होगी, जब तक कि आप अपनी वेब पेज की अपनी मेजबानी नहीं कर रहे हों

अपने सर्वर पर PHP और MySQL संस्करण की जांच करने के लिए, इस का उपयोग करें phpinfo () - समारोह।

चरणों

भाग 1
अपने सर्वर को कॉन्फ़िगर करें

  1. 1
    अपने सर्वर पर एक नेटवर्क सर्वर, PHP और MySQL स्थापित करें।

    नेटवर्क पर सबसे अधिक वेब होस्टिंग सेवाएं पहले से ही PHP और MySQL स्थापित हैं काम करने के लिए आपको इस आलेख के निर्देशों के नवीनतम संस्करणों को देखने की आवश्यकता है अगर उनके पास संस्करण PHP5.3 और MySQL5 भी नहीं होते हैं, तो संभवत: वह जो सुरक्षा प्रदान करते हैं, उस पर सवाल करने का मामला है। यह इसलिए है क्योंकि सॉफ्टवेयर को अद्यतित रखने से सुरक्षा प्रक्रिया का एक हिस्सा है

    यदि आपके कंप्यूटर पर आपका स्वयं का सर्वर है, तो आपके सिस्टम के लिए आमतौर पर उपयोग किए जाने वाले डिफ़ॉल्ट प्रोग्राम को स्थापित करना सबसे अच्छा है। सामान्य तौर पर, यदि आप उत्पादन उद्देश्यों के लिए सेटअप का उपयोग नहीं करने जा रहे हैं और Windows या OS / X के साथ काम कर रहे हैं, तो XAMPP इंस्टॉल करने का एक अच्छा विकल्प है। लिंक पर अपने ऑपरेटिंग सिस्टम के लिए उचित संस्करण प्राप्त करें:

    https://apachefriends.org/en/xampp.html

    याद रखें कि XAMPP का उपयोग कभी भी आपके लिए उत्पादन सर्वर परिवेश बनाने के लिए नहीं किया जाना चाहिए।

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

    sudo apt-get दीपक सर्वर स्थापित करें ^ phpmyadmin



    अगर आप आवश्यक तत्व स्थापित करते हैं, तो यह जांचना महत्वपूर्ण है कि क्या MySQL एक मजबूत रूट पासवर्ड के साथ कॉन्फ़िगर किया गया है या नहीं।

भाग 2
MySQL डाटाबेस को कॉन्फ़िगर करें

  1. 1
    एक MySQL डाटाबेस बनाएँ

    व्यवस्थापक के रूप में अपने डेटाबेस में लॉग इन करें (आमतौर पर रूट-उपयोगकर्ता)

    इस आलेख में, हम "secure_login" नामक एक डेटाबेस बनाएंगे

    यहाँ आलेख में यह कैसे करना है https://pt.ihsadke.com/Instalar-o-phpMyAdmin-em-Seu-PC-do-Windows

    यदि आप चाहें तो नीचे दिए गए कोड का उपयोग कर सकते हैं या ऐसा ही कर सकते हैं जैसे phpMyAdmin / आपके पसंदीदा MySQL GUI क्लाइंट के समान करें:

    डाटाबेस बनाना `सुरक्षित_लागिन`-
    नोट: कुछ वेबसाइट होस्टिंग सेवाएं आपको phpMyAdmin का उपयोग कर डेटाबेस बनाने की अनुमति नहीं देते हैं, सीपीएनएल में यह कैसे करना सीखें.
  2. 2
    एक ऐसे उपयोगकर्ता बनाएं, जिसमें निम्न विशेषाधिकार हैं: चुनें, अद्यतन और INSERT

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

    याद रखें कि आपको एक उपयोगकर्ता के रूप में MySQL में पर्याप्त विशेषाधिकार (जो कि एक रूट उपयोगकर्ता है) के साथ लॉग इन करने की आवश्यकता है।

    यहां हमने बनाया उपयोगकर्ता का विवरण दिया गया है:
    • उपयोगकर्ता: "Sec_user"
    • पासवर्ड: "EKcGZr59zAa2BEWU"

    नोट: अपने खुद के सर्वर पर चलते समय ऊपर दिए गए पासवर्ड को बदलने के लिए सलाह दी जाती है ऐसा करते समय, नीचे दिए गए कोड को बदलना सुनिश्चित करें और PHP डेटाबेस कनेक्शन कोड को बनाने के लिए आवेदन करें।

    आपको इस पासवर्ड को याद रखने की ज़रूरत नहीं होगी, इसलिए संभव है कि जितना जटिल हो उतना जटिल बनाएं। निम्नलिखित पासवर्ड जनरेटर लिंक देखें: यादृच्छिक पासवर्ड जनरेटर

    नीचे यूज़र्स डेटाबेस बनाने के लिए एसक्यूएल कोड और उनसे कुछ कार्यविधियों के लिए अनुमतियों को असाइन करने के लिए नीचे दिया गया है। वैकल्पिक रूप से इस कार्य को GUI क्लाइंट डाटाबेस में करना है, जैसे कि phpmyadmin:

    `पर eKcGZr59zAa2BEWU`-चयन GRANT सम्मिलित करें, अद्यतन` secure_login` से उपयोगकर्ता बनाएं `sec_user` @ स्थानीय होस्ट द्वारा की पहचान। * `Sec_user` @ `के लिए localhost`-


    आपने इस मॉड्यूल में तालिकाओं में से किसी से रिकॉर्ड को नष्ट करना चाहते हैं, तो विशेषाधिकार की अपनी सूची में DELETE जोड़ सकते हैं या जो केवल हटाएं विशेषाधिकार है, और केवल तालिका जाने वाले डेटा को नष्ट करने के लिए (यदि आप डेटा को हटाने के लिए नहीं करना चाहते चाहते हैं है एक अलग उपयोगकर्ता बनाने दोनों तालिकाओं)। आपको इस स्क्रिप्ट में किसी भी कार्य के लिए DELETE विशेषाधिकार प्रदान करने की ज़रूरत नहीं है जिसे आप एक उदाहरण के रूप में पालन करते हैं।
  3. 3
    नाम "सदस्यों" के साथ MySQL में तालिका बनाएं

    नीचे दिए गए कोड में पांच फ़ील्ड (आईडी - उपयोगकर्ता नाम, उपयोगकर्ता नाम, ईमेल, पासवर्ड - पासवर्ड, नमक - सुरक्षा को बढ़ाने और पासवर्ड को कस्टमाइज़ करने के लिए उपयोग किए जाने वाले यादृच्छिक डेटा) के साथ एक तालिका बनाई गई है। हम उन क्षेत्रों के लिए सीआरएआर डेटा प्रकार का उपयोग करते हैं जिसका विस्तार हम जानते हैं, जैसे कि "पासवर्ड" और "नमक", जो हमेशा 128 अक्षर लंबा होगा इस प्रक्रिया में CHAR का उपयोग करते समय, आप प्रोसेसिंग पावर प्राप्त करते हैं:

    टेबल secure_login`.`members` बनाएँ `(` id``AUTO_INCREMENT INT प्राथमिक कुंजी नहीं NULL, `username` VARCHAR (30) नहीं NULL,` VARCHAR (50) नहीं NULL, `password` CHAR (128) नहीं NULL email`, `नमक` सीआरएआर (128) नहीं नल) इंजन = इंनोडीबी-

    आप ऐसा किसी भी प्रकार के ग्राहक पर कर सकते हैं।
  4. 4
    लॉगइन प्रयास रिकॉर्ड करने के लिए एक तालिका बनाएं

    हम इस तालिका का उपयोग किसी उपयोगकर्ता के लॉगिन प्रयासों को रिकॉर्ड करने के लिए करेंगे। यह अधिक हिंसक हमलों को बाधित करने का एक तरीका है:

    टेबल secure_login`.`login_attempts` बनाएँ `(` user_id` INT (11) नहीं NULL, `time` VARCHAR (30) नहीं NULL) इंजन = `InnoDB

  5. 5
    "सदस्य" तालिका में एक अनुक्रमिक परीक्षा बनाएं

    आपके लॉगिन स्क्रिप्ट का परीक्षण करने में सक्षम होना ज़रूरी है। इसलिए, यहां एक उपयोगकर्ता के लिए एक स्क्रिप्ट है जिसका डेटा आप जानते हैं:
    • उपयोगकर्ता नाम: test_user
    • आपका ईमेल: [email protected]
    • पासवर्ड: 6ZaxN2Vzm9NUJT2y

    इस उपयोगकर्ता के रूप में लॉगिन करने की आवश्यकता है, इस प्रकार है:

    जांच `secure_login`.`members` मान प्रविष्ट करें (1," test_user `` [email protected] `` 00807432eae173f652f2064bdca1b61b290b52d40e429a7d295d76a71084aa96c0233b82f1feac45529e0726559645acaed6f3ae58a286b9f075916ebf66cacc `` f9aab579fc1b41ed0c44fe4ecdbfcdb4cb99b9023abb241a6db833288f4eea3c02f76e0d35204a8695077dcf81932aa59006423976224be0390395bae152d4ef `) -

भाग 3
एक डेटाबेस कनेक्शन पृष्ठ बनाएँ

  1. 1
    एक वैश्विक सेटिंग पृष्ठ बनाएं

    मुख्य एप्लिकेशन निर्देशिका में "शामिल करें" नामक फ़ोल्डर बनाएं और उस निर्देशिका में एक नया PHP फ़ाइल बनाएं।
    इस फ़ाइल को psl-config.php के रूप में नाम दें उत्पादन परिवेश में, आप इस फ़ाइल को छोड़ सकते हैं और बाद में, नेटवर्क सर्वर के रूट दस्तावेज़ के बाहर शामिल किए गए किसी भी अन्य व्यक्ति को छोड़ सकते हैं। हम दृढ़ता से अनुशंसा करते हैं कि आप ऐसा करते हैं, साथ ही इसमें आवश्यकतानुसार कमांड की आवश्यकता शामिल करने और बदलने की आवश्यकता होती है ताकि एप्लिकेशन में फ़ाइलें शामिल हो सकें।

    नेटवर्क सर्वर के रूट दस्तावेज़ के बाहर अपने फाइलों को छोड़ने का मतलब है कि उन्हें किसी यूआरएल के माध्यम से नहीं मिला जा सकता है। इसलिए, अगर किसी को `php` एक्सटेंशन को अंत में डालना भूल जाता है या फ़ाइल अनुमतियों के साथ समस्या पैदा करता है, तो उसे ब्राउज़र विंडो में टेक्स्ट के रूप में प्रदर्शित नहीं किया जा सकता है।

    फ़ाइल में वैश्विक विन्यास चर शामिल हैं जानकारी जैसे कि कोई पंजीकृत कर सकता है, चाहे कनेक्शन सुरक्षित है या नहीं (HTTPS) और अन्य डेटाबेस का विवरण यहां छोड़ा जा सकता है ...

  2. 2
    एक डेटाबेस कनेक्शन पृष्ठ बनाएँ

    यह PHP कोड है जिसका उपयोग हम mySQL डाटाबेस से कनेक्ट करने के लिए करेंगे।
    एप्लिकेशन की शामिल निर्देशिका में db_connect.php नाम की एक नई PHP फ़ाइल बनाएं और नीचे कोड जोड़ें। उसके बाद आप किसी भी पृष्ठ पर फ़ाइल को शामिल कर सकते हैं जिसे आप डेटाबेस से कनेक्ट करना चाहते हैं।

भाग 4
PHP फ़ंक्शंस बनाएं

ये कार्य लॉगिन स्क्रिप्ट के सभी प्रसंस्करण करेंगे। सभी कार्यों को "function.php" नामक एक पेज पर जोड़ें, जिसमें एप्लिकेशन की निर्देशिका शामिल है।

  1. 1
    एक सुरक्षित PHP सत्र प्रारंभ करें
    क्या तुम सच में सुरक्षा के बारे में चिंतित हैं, तो यह महत्वपूर्ण है नहीं करने के लिए बस "session_start ()" जिसमें आप php सत्र का उपयोग करना चाहते हर पेज के शीर्ष पर (कहना है कि वे सुरक्षित होने के लिए मशहूर नहीं हैं)। चलिए "sec_session_start" नामक फ़ंक्शन बनाते हैं, जो कि एक php सत्र को सुरक्षित रूप से शुरू करेगा आपको इस फ़ंक्शन को प्रत्येक पृष्ठ के शीर्ष पर कॉल करना चाहिए, जहां से आप एक php सत्र चर का उपयोग करना चाहते हैं।

    यह फ़ंक्शन आपका लॉगिन स्क्रिप्ट बहुत सुरक्षित बनाता है यह क्रैकर्स जावास्क्रिप्ट के माध्यम से सत्र कुकी आईडी तक पहुंचने से रोकता है (उदाहरण के लिए, XSS हमले में)। "Session_regenerate_id ()" फ़ंक्शन प्रत्येक लोड किए गए पृष्ठ पर सत्र आईडी पुनर्प्राप्त करता है, जिससे सत्र चोरी को रोकने में मदद मिलती है। नोट: यदि आप अपने लॉगिन एप्लिकेशन में HTTPS का उपयोग कर रहे हैं, तो "$ सुरक्षित" चर को सही पर सेट करें। उत्पादन परिवेश में, यह आवश्यक है कि आप HTTPS का उपयोग करें।

    अपनी एप्लिकेशन निर्देशिका में functions.php नामक एक नई फ़ाइल बनाएं और उस पर निम्न कोड जोड़ें:
  2. 2
    लॉगिन फ़ंक्शन बनाएं
    यह फ़ंक्शन यह जांच करेगा कि क्या ईमेल और पासवर्ड डेटाबेस में मौजूद हैं या नहीं। यदि हां, तो यह "सत्य" के रूप में देता है इस फ़ंक्शन को अपने functions.php फ़ाइल में जोड़ें:
    फ़ंक्शन लॉगिन ($ ईमेल, $ पासवर्ड, $ mysqli) {// प्री-सेट परिभाषाओं का अर्थ है कि एसक्यूएल इंजेक्शन (हमले का एक प्रकार) संभव नहीं है अगर ($ stmt = $ mysqli-> ( "का चयन करें आईडी, उपयोगकर्ता नाम, पासवर्ड, ईमेल saltFROM membersWHERE = सीमा 1?") तैयार) {$ stmt-> bind_param ( `एस`, $ ईमेल) - // सूचियों "$ ईमेल । "पैरामीटर $ stmt- करने के लिए> निष्पादित () - // कार्य $ stmt-> store_result सेट चलाता है (।) - // परिणामों से चर मिलता है। $ Stmt-> bind_result ($ user_id, $ उपयोगकर्ता नाम, $ db_password, $ नमक) - $ stmt-> लाने () - // एक नमक excusivo $ पासवर्ड के साथ पासवर्ड के हैश = हैश ( `SHA512`, $ पासवर्ड बनाता है। । $ नमक) -यदि (stmt- $> NUM_ROWS == 1) {// उपयोगकर्ता मौजूद रहने पर, जाँच की खाता सीमा // लॉगिन प्रयास करता है, तो पार हो चुकी है की वजह से बंद कर दिया गया है या नहीं (checkbrute (user_id $, $ mysqli) == true) {// खाता लॉक है // उपयोगकर्ता उस खाते रिटर्न झूठी (गलत लॉक किया गया है को एक ईमेल भेजें) -} else {// चेक पासवर्ड डेटाबेस में रिकॉर्ड के साथ मेल खाता है तो // उपयोगकर्ता का पासवर्ड भेजा जाता है। यदि ($ db_password == $ पासवर्ड) {// पासवर्ड सही है! // उपयोगकर्ता-एजेंट स्ट्रिंग हो जाता है User_browser = $ $ _SERVER [ `HTTP_USER_AGENT`] - // XSS सुरक्षा मूल्य $ user_id = preg_replace के रूप में मुद्रित ( "/ [^ 0-9] + /" "" $ user_id) - $ _ सत्र [ `user_id`] user_id = $ - // XSS संरक्षण मूल्य $ उपयोगकर्ता नाम = preg_replace के रूप में मुद्रित ( "/ [^ a-zA-Z0-9 _ -] /" "" $ उपयोगकर्ता नाम) - $ _ सत्र [ `उपयोगकर्ता नाम`] = $ उपयोगकर्ता नाम - $ _ सत्र [ `login_string`] = हैश ( `SHA512`, $ पासवर्ड $ user_browser।) - // लॉग इन sucesso.return true-} else {// पासवर्ड नहीं सही // इस प्रयास में दर्ज की गई है पूरा डेटाबेस $ अब समय () = - $ mysqli-> प्रश्न ( "login_attempts (user_id, समय) मूल्यों ( `$ user_id`, में डालने `$ अब`)") - और false- लौट}}} {// ऐसा कोई उपयोगकर्ता मौजूद नहीं है। झूठी झूठी -}}}

  3. 3
    ब्रूट फोर्स फंक्शन
    ब्रूट बल या क्रूरता-बल के हमले तब होते हैं जब हैकर एक एकल खाते में हजारों अलग-अलग पासवर्डों की कोशिश करते हैं, चाहे वे बेतरतीब ढंग से पासवर्ड बनाए हों या किसी शब्दकोश से। हमारी स्क्रिप्ट में, अगर कोई प्रयोक्ता 5 बार से अधिक बार अपने लॉगिन प्रयास में विफल रहता है, तो उनका खाता अवरुद्ध हो जाएगा।

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

    हम कैप्चा का उपयोग करने के लिए दृढ़ता से अनुशंसा करते हैं हमने अभी तक इस कार्यक्षमता को उदाहरण कोड में लागू नहीं किया है, लेकिन हम इसे जल्द ही उपलब्ध कराने के लिए काम कर रहे हैं। अभी के लिए, इस का उपयोग करें SecureImage, जहां यह रजिस्टर करने के लिए आवश्यक नहीं है या आप कुछ बेहतर ज्ञात उपयोग कर सकते हैं, जैसे कि reCAPTCHA Google से

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

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

    फ़ंक्शन चेकब्रुट ($ user_id, $ mysqli) {// वर्तमान समय $ $ रजिस्टरों = समय () - // सभी लॉगिन प्रयासों की गणना पिछले 2 घंटों के भीतर की जाती है। $ valid_attempts = $ अब - (2 * 60 * 60) -इस्फ़ेस ($ stmt = $ mysqli-> तैयार ("चयन समय से लॉग इन_अनुरोध 
    जहां USER_ID = और समय> `$ valid_attempts` ")) {$ stmt-> bind_param ( `i`, $ user_id) -। // पूर्व स्थापित कार्य $ stmt- चलाता> निष्पादित () - $ stmt-> store_result () - // अगर 5 से अधिक विफल लॉगिन प्रयास होते हैं ($ stmt-> num_rows> 5) {वापसी true-} else {return false-}}}
  4. 4
    लॉगिन स्थिति की जांच करें।
    यह सत्र चर "user_id" और "login_string" की जांच करके किया जाता है। "Login_string" सत्र की चर पासवर्ड के साथ हैश और आईपी पते की जानकारी है हम आईपी पते और ब्राउज़र जानकारी का उपयोग करते हैं क्योंकि यह अत्यधिक संभावना नहीं है कि उपयोगकर्ता अपने सत्र के दौरान आईपी एड्रेस या ब्राउज़र को बदल देगा। ऐसा करने से, आप सत्र पर एक अपहरण के हमले को रोकते हैं (सत्र अपहरण, शब्दशः)। इस फ़ंक्शन को अपने कार्यों में शामिल करें। Php फ़ाइल में आपके एप्लिकेशन के फ़ोल्डर शामिल हैं:




    समारोह login_check ($ mysqli) {// जाँच करें कि क्या सभी चर सत्र निर्धारित किया गया है, तो (isset ($ _ सत्र [ `user_id`] $ _ सत्र [ `उपयोगकर्ता नाम`] $ _ सत्र [ `login_string`])) {$ user_id = $ _SESSION [ `user_id`] - $ login_string = $ _ सत्र [ `login_string`] - $ उपयोगकर्ता नाम = $ _SESSION [ `उपयोगकर्ता नाम`] -। // उपयोगकर्ता स्ट्रिंग $ user_browser = $ _SERVER जाओ [ `HTTP_USER_AGENT`] - अगर ($ stmt = $ mysqli-> तैयार ( "का चयन करें passwordFROM membersWHERE आईडी =? सीमा 1")) {// असाइन `$ user_id "पैरामीटर के लिए। $ Stmt-> bind_param (i, $ user_id) - $ stmt-> निष्पादित () - // क्वेरी प्रदर्शन तैयार stmt- $> store_result () -। अगर ($ stmt-> NUM_ROWS == 1) {/ / यदि उपयोगकर्ता मौजूद है, तो परिणाम से चर प्राप्त करें। $ Stmt-> bind_result ($ पासवर्ड) - stmt- $> लाने () - $ login_check -यदि = हैश (== $ $ login_check login_string) {// ऑनलाइन !!! ( `SHA512` पासवर्ड user_browser $ $।) वापस लौटें-} else {// गलत नहीं लौटाया जा सकता-}} else {// गलत नहीं लौटाया जा सकता-}} {// गलत नहीं लौटाया जा सकता-}} else {// गलत- }}
  5. 5
    PHP_SELF URL साफ़ करें
    निम्नलिखित फ़ंक्शन PHP_SELF सर्वर चर का परिणाम साफ करता है
    यह फ़ंक्शन का एक संशोधन है जिसे वर्डप्रेस कंटेंट मैनेजमेंट सिस्टम द्वारा समान नाम दिया गया है:

    फ़ंक्शन esc_url ($ url) {यदि (`` == $ url) {वापसी $ url -} $ url = preg_replace (`| [^ a-z0- 9- ($ `), $ url) - $ strip = सरणी (`% 0d `,`% 0a `,`% 0D `,`% (यूआरएल = $ गिनती) {$ url = str_replace ($ स्ट्रिप, ``, $ url, $ count) - url = str_replace (`- $ url - $ count) ($ url) - $ url = str_replace (`amp-,` # url) - $ url = htmlentities ($ url) हम केवल $ _SERVER [`PHP_SELF`] रिटर्न `` -} से संबंधित लिंक में रुचि रखते हैं {वापसी $ url-}}


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

    दूसरों ने आपको असाइनमेंट को रिक्त स्थान छोड़ने के लिए निर्देश दिया या इसे रिक्त स्थान पर सेट किया। लेकिन ऐसा करके, आप पर्यावरण पर हमला करने के लिए कमजोर छोड़ देते हैं iframe clickjacking हमले.

भाग 5
प्रोसेसिंग पेज बनाना

  1. 1
    लॉगिन प्रसंस्करण पृष्ठ बनाएं (process_login.php)

    एप्लिकेशन की शामिल निर्देशिका में process_login.php नामक लॉग इन प्रक्रिया करने के लिए एक फ़ाइल बनाएं।
    यह एचटीएमएल में निशान छोड़ने के लिए चुना गया निर्देशिका थी

    हम PHP फ़ंक्शन सेट mysqli_ * का उपयोग करेंगे क्योंकि यह mysql का सबसे वर्तमान विस्तार है

  2. 2
    लॉगआउट स्क्रिप्ट बनाएं

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

    उपयोगकर्ता को लॉग आउट करने के लिए इस्तेमाल किया जाने वाला वर्तमान कोड और जो कि लॉगआउट.php नामक फ़ाइल में जोड़ा जाना चाहिए अनुप्रयोग में निर्देशिका शामिल है:

  3. 3
    रिकॉर्ड्स पृष्ठ

    रजिस्ट्रेशन कोड को दो नई फाइलों में शामिल किया गया है, जिसे मुख्य एप्लिकेशन डायरेक्टरी में एक नामांकित register.php और दूसरा रजिस्टर.in.php कहा जाता है जिसमें निर्देशिका शामिल है। यह निम्नलिखित करता है:
    • वह प्रयोक्ता नाम प्राप्त करता है और मान्य करता है जो प्रयोक्ता चाहता है
    • उपयोगकर्ता के ईमेल को प्राप्त और मान्य करता है
    • उस उपयोगकर्ता को पासवर्ड का उपयोग करने की अनुमति देता है और उसे मान्य करता है।
    • पासवर्ड के हैश को डालता है और उसे register.php पृष्ठ पर भेज देता है (अर्थात यह कोड खुद के लिए पासवर्ड प्रदर्शित करता है)

    क्लाइंट संस्करण में अधिकांश मान्यताओं को जावास्क्रिप्ट में किया जाता है। इसका कारण यह है कि प्रयोक्ता को इन सभी चेक के माध्यम से जाने की कोई प्रेरणा नहीं है। उपयोगकर्ता सामान्य से कम सुरक्षित खाता क्यों बनाना चाहते हैं? हम अगले विषय में जावास्क्रिप्ट पर चर्चा करेंगे।

    अभी के लिए, सिर्फ एक register.php फ़ाइल नामक एक फ़ाइल बनाएँ और इसमें निम्न कोड शामिल करें:

    सुरक्षित लॉगइन: पंजीकरण फॉर्म

    हमारे साथ रजिस्टर करें

  4. उपयोगकर्ता नामों में केवल अंक, अपरकेस और लोअरकेस अक्षरों और रेखांकित होना चाहिए ("_")
  5. ईमेल को एक वैध ईमेल प्रारूप का पालन करना चाहिए।
  6. पासवर्ड कम से कम 6 अक्षर लंबा होना चाहिए।
  7. पासवर्ड में होना चाहिए
    • कम से कम एक कैपिटल लेटर (ए .. जेड)
    • कम से कम एक लोअर केस लेटर (ए .. जे)
    • कम से कम एक नंबर (0..9)
  8. आपका पासवर्ड ठीक से जांचना चाहिए
  9. पर लौटें लॉगइन पेज.



    रजिस्टर.in.एपीपी फ़ाइल में डाइरेक्टरी में निम्नलिखित कोड होना चाहिए:

    आपके द्वारा दर्ज ईमेल पता वैध नहीं है

    (पासवर्ड) = {password_filename ()) {// एक हैश के साथ पासवर्ड 128 वर्ण होना चाहिए। अन्यथा, कुछ बहुत अजीब हो रहा है $ error_msg। = `

    अमान्य पासवर्ड कॉन्फ़िगरेशन

    `-} // उपयोगकर्ता नाम और पासवर्ड उम्र बढ़ने की ओर से सम्मानित किया cliente.// वहाँ इस चरण में कोई समस्या नहीं के बाद से कोई भी जीतता होना चाहिए // सदस्यों से कहां ईमेल इन regras.//$prep_stmt = "का चयन करें आईडी का उल्लंघन ? = सीमा 1 "- $ stmt = $ mysqli-> तैयार ($ prep_stmt) -यदि ($ stmt) {$ stmt-> bind_param ( `एस`, $ ईमेल) - $ stmt-> निष्पादित () - $ stmt- > store_result () - यदि ($ stmt-> num_rows == 1) {// इस ईमेल वाला उपयोगकर्ता पहले से मौजूद है $ error_msg। = `

    इस ईमेल पते वाला उपयोगकर्ता पहले से मौजूद है

    `-}} और {$ error_msg =`

    डेटाबेस त्रुटि

    `-} // नौकरियों की सूची: // हम जब उपयोगकर्ता // रजिस्टर कोई अधिकार नहीं है के लिए समाधान के साथ आने के लिए, जाँच उपयोगकर्ता की किस तरह पूरा करने के लिए कोशिश कर रहा है की जरूरत है // operação.if (खाली ($ ERROR_MSG)) {/ / एक यादृच्छिक नमक $ random_salt = हैश बनाएँ ( `SHA512`, uniqid (openssl_random_pseudo_bytes (16), TRUE)) - // नमक $ पासवर्ड = हैश के साथ कोई पासवर्ड बनाएं ( `SHA512`, $ पासवर्ड $ random_salt।) - // अगर ($ = $ insert_stmt mysqli-> तैयार ( "सदस्य (उपयोगकर्ता नाम, ईमेल, पासवर्ड, नमक) मान में डालें (?,?,?,?)")) डेटाबेस में नया उपयोगकर्ता दर्ज {$ insert_stmt-> bind_param ( `ssss` $ उपयोगकर्ता नाम, $ ईमेल, $ पासवर्ड, $ random_salt) - // पूर्व estabelecida.if कार्य चलाने के लिए ($ insert_stmt-> निष्पादित ()) {हैडर ( `स्थान: ../error। php? err = पंजीकरण विफलता: INSERT `) -}} हैडर (` स्थान: ./register_success.php`)-}}


    यदि फॉर्म में कोई पोस्ट डेटा नहीं दिया गया है, तो रिकॉर्ड्स फॉर्म प्रकट होता है। "भेजें" बटन को जावास्क्रिप्ट फंक्शन कहा जाता है जिसे regformhash कहा जाता है () वह आवश्यक सत्यापन जांच कर रही है और फार्म सबमिट करता है। जावास्क्रिप्ट कार्यों पर चर्चा की जाएगी अगले विषय में

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

    यदि सब कुछ सत्यापन के माध्यम से चला जाता है, तो साइट के सदस्यों की तालिका में एक नया रजिस्टर भरते समय नया उपयोगकर्ता पंजीकृत होता है।

भाग 6
जावास्क्रिप्ट फ़ाइलें बनाएँ

  1. 1
    एक sha512.js फ़ाइल बनाएँ।

    यह फ़ाइल शाह 512 हैशिंग एल्गोरिथम का जावास्क्रिप्ट कार्यान्वयन है हम हैशिंग फ़ंक्शन का उपयोग करेंगे ताकि हमारे पासवर्ड सादा पाठ प्रपत्र में न भेजे जाएं।

    फ़ाइल यहां डाउनलोड की जा सकती है: pajhome.org.uk

    (यह भी जिथब भंडार में सहेजा जाता है)

    "जेएस" नामक एक डायरेक्टरी में इस फाइल की एक प्रति सहेजें, आवेदन की मुख्य निर्देशिका से आ रही है।

  2. 2
    Forms.js फ़ाइल बनाएं
    यह फ़ाइल किसी भी रूप के पासवर्ड के हैश को संभाल देगा। (फॉर्मशेश ()) और पंजीकरण (रेफॉर्मफाश ()):

    फ़ंक्शन formhash (फ़ॉर्म, पासवर्ड) {// एक नया इनपुट तत्व बनाएं, जो हैशेड पासवर्ड के लिए फ़ील्ड होगा var p = document.createElement ("इनपुट") - // हमारे फ़ॉर्म में एक नया तत्व जोड़ें। form.appendChild (पी) -p.name = "पी" -p.type = "छिपा" -p.value = hex_sha512 (password.value) - सावधान रहें // सादे पाठ में पासवर्ड नहीं भेज दिया जाता है यह बताने के लिए नहीं। password.value = "" - // अंत में, फ़ॉर्म जमा करें। form.submit () -} समारोह regformhash (फार्म, यूआईडी, ईमेल, पासवर्ड, conf) {// जाँच करें कि हर क्षेत्र एक valorif || पासवर्ड है (uid.value == `` || email.value == `` }} - वापसी झूठी -} // उपयोगकर्ता नाम = / ^ w + पर जांचें $ / - अगर (re.test (form.username.value)) {चेतावनी ( "प्रयोक्ता नाम केवल अक्षर, अंक होते हैं और रेखांकित पुन: प्रयास करें चाहिए।") - form.username.focus () - रिटर्न फाल्स -} / / चेक अगर पासवर्ड काफी लंबे समय है (कम से कम 6 अक्षर) // जांच नीचे दोहराया गया है, लेकिन अतिरिक्त देखभाल usuárioif को // (password.value.length अधिक विशिष्ट मार्गदर्शन दे रहा है < 6) {alert(`Passwords must be at least 6 characters long. Please try again`)-form.password.focus()-return false-}// Pelo menos um número, uma letra minúscula e outra maiúscula // Pelo menos 6 caracteres var re = /(?=.*d)(?=.*[a-z])(?=.*[A-Z]).{6,}/-if (!re.test(password.value)) {alert(`Passwords must contain at least one number, one lowercase and one uppercase letter. Please try again`)-return false-}// Verificar se a senha e a confirmação são as mesmasif (password.value != conf.value) {alert(`Your password and confirmation do not match. Please try again`)-form.password.focus()-return false-}// Crie um novo elemento de input, o qual será o campo para a senha com hash. var p = document.createElement("input")-// Adicione o novo elemento ao nosso formulário. form.appendChild(p)-p.name = "p"-p.type = "hidden"-p.value = hex_sha512(password.value)-// Cuidado para não deixar que a senha em texto simples não seja enviada. password.value = ""-conf.value = ""-// Finalizando, envie o formulário. form.submit()-return true-}

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

भाग 7
एचटीएमएल पेज बनाएँ

  1. 1
    लॉगिन फॉर्म बनाएं (login.php)।

    यह दो पाठ क्षेत्रों के साथ एक HTML फार्म है, जिसे "ईमेल" और "पासवर्ड" कहा जाता है जावास्क्रिप्ट फिर पासवर्ड के हैश उत्पन्न करेगा और "ईमेल" और "पी" (पासवर्ड हैश) को सर्वर पर भेज देगा। आपको यह फाइल मुख्य एप्लिकेशन निर्देशिका में बनाना चाहिए।

    प्रवेश करते समय, कुछ नहीं सार्वजनिक उपयोग करने के लिए सबसे अच्छा है इस गाइड के लिए, हम एक लॉगिन के रूप में ईमेल का उपयोग कर रहे हैं- यूज़रनेम को उपयोगकर्ता की पहचान के लिए बाद में इस्तेमाल किया जा सकता है। यदि ईमेल बड़े आवेदन के भीतर किसी भी पृष्ठ पर प्रदर्शित नहीं होता है, तो यह उन खातों को बाधित होगा जो खाते को दरकिनार करने का प्रयास करते हैं।

    नोट: यद्यपि हमने पासवर्ड को एन्क्रिप्ट किया है, इसलिए इसे सादा पाठ स्वरूप में नहीं भेजा गया है, यह आवश्यक है कि आप HTTPS (TLS / SSL) प्रोटोकॉल का पालन करें, जब उत्पादन सिस्टम को पासवर्ड भेजते हैं। हम इस बात पर अपना ध्यान आकर्षित करते हैं कि अकेले पासवर्ड में हैश पर्याप्त सुरक्षित नहीं है। एक मानव-इन-द-मध्य आक्रमण को हैश को पढ़ने के लिए कहा जा सकता है और फिर उस जानकारी का उपयोग करने के लिए लॉग इन किया जा सकता है।

    सुरक्षित लॉगिन: लॉग इन करेंप्रवेश करने में त्रुटि!

    `-}>?

    अगर आपके पास कोई लॉगिन नहीं है, तो कृपया रजिस्टर

    यदि आप कर रहे हैं, तो कृपया लॉग आउट करें.

    आप वर्तमान में लॉग इन हैं


  2. 2
    Register_success.php नामक पृष्ठ बनाएं

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

    सुरक्षित लॉगिन: पंजीकरण सफलता

    पंजीकरण सफल!

    अब आप वापस जा सकते हैं लॉगइन पेज और प्रवेश करें


  3. 3
    एक त्रुटि पेज बनाएँ

    मुख्य एप्लिकेशन निर्देशिका में एक नया HTML पृष्ठ बनाएं।
    इसे error.php नाम दें यह पृष्ठ है जिसके लिए उपयोगकर्ता को पुनर्निर्देशित किया जाएगा यदि लॉगिन या पंजीकरण प्रक्रिया के दौरान कोई त्रुटि उत्पन्न होती है, या जब वे एक सुरक्षित सत्र स्थापित करने का प्रयास कर रहे हैं। नीचे दिया गया कोड काफी बुनियादी त्रुटि पृष्ठ प्रदान करता है। आपको कुछ और परिष्कृत की आवश्यकता होगी यह महत्वपूर्ण है कि XSS हमलों से बचाने के लिए पृष्ठ पर इनपुट फ़िल्टर्ड किया गया है नमूना पृष्ठ के लिए कोड है:

    सुरक्षित लॉगिन: त्रुटि

    एक समस्या थी


भाग 8
पेजों की रक्षा करना

  1. 1
    पृष्ठ सुरक्षा स्क्रिप्ट

    प्रमाणीकरण प्रणाली के साथ सबसे आम समस्याओं में से एक यह है कि डेवलपर यह जांचने के लिए भूल जाता है कि उपयोगकर्ता लॉगिन है या नहीं। यह बहुत महत्वपूर्ण है कि आप प्रत्येक संरक्षित पृष्ठ पर नीचे दिए गए कोड का उपयोग यह देखने के लिए करें कि उपयोगकर्ता लॉगिन है या नहीं। निम्न फ़ंक्शन का उपयोग करें:

    // फ़ंक्शन और डेटाबेस कनेक्शन जोड़ें यहां। 3.1 देखें sec_session_start () - यदि (login_check ($ mysqli) == सच) {// अपने संरक्षित पृष्ठ की सामग्री यहां जोड़ें! } else {गूंज `आप इस पेज को एक्सेस करने के लिए अधिकृत नहीं हैं, कृपया लॉगिन करें।`

    हमने एक उदाहरण के रूप में सेवा देने के लिए एक संरक्षित पृष्ठ शामिल किया है। मुख्य एप्लिकेशन निर्देशिका में protected_page.php नामक फ़ाइल बनाएँ। फ़ाइल में कुछ ऐसा होना चाहिए:

    सुरक्षित लॉगइन: संरक्षित पृष्ठस्वागत 

    यह एक उदाहरण के रूप में सेवा करने के लिए एक सुरक्षित पृष्ठ है। इसे एक्सेस करने के लिए, उपयोगकर्ताओं को लॉग इन करना होगा। कुछ बिंदु पर, हम उस भूमिका की जांच भी करेंगे जो उपयोगकर्ता खेल रहा है ताकि हम उस पृष्ठ का उपयोग करने के लिए अधिकृत उपयोगकर्ता के प्रकार का निर्धारण कर सकें।

    पर लौटें लॉगइन पेज

    आपको इस पृष्ठ को एक्सेस करने की अनुमति नहीं है कृपया लॉग इन.


    सफलतापूर्वक पूर्ण लॉगिन के बाद हमारा आवेदन इस पृष्ठ पर पुनर्निर्देशित है ऐसा करने के लिए आपके कार्यान्वयन की आवश्यकता नहीं है।

युक्तियाँ

  • कुछ परिवर्तनों के साथ, ये नमूना स्क्रिप्ट अन्य SQL सिस्टम जैसे कि SQLite या PostgreeSQL के साथ काम करने के लिए संशोधित किया जा सकता है
  • यदि आप शाह 512 के अलावा एक हैश एल्गोरिथम का उपयोग करना चाहते हैं, तो भँवर की कोशिश करें गस्ट, शा 1 (जब तक कि वे पूरी तरह से नमक और कई पुनरावृत्तियों के साथ प्रबलित हों) से बचें और जैसा कि पहले उल्लेख किया गया है, एमडी 5। प्रयोक्ताओं को मजबूत बनाने के लिए प्रोत्साहित करें, अद्वितीय पासवर्ड जिसमें अपरकेस और लोअरकेस अक्षरों के साथ-साथ नंबर और प्रतीकों भी शामिल हैं। इसके बारे में भी सोचें कि क्या आपके उपयोगकर्ता एक लॉगिन मुद्रीकरण अपने उपयोगकर्ता नाम से अलग सुरक्षा बढ़ाने के लिए बना सकते हैं।
  • अपनी वरीयताओं के अनुसार लॉगिन फॉर्म और रिटर्न पेज फ़ॉर्मेट करने के लिए एचटीएमएल और सीएसएस का उपयोग करें।
  • लॉगिन स्क्रिप्ट में एमडी 5 () फ़ंक्शन से दूर रहें। एमडी 5 हैश एल्गोरिथ्म को वर्तमान में असुरक्षित माना जाता है असुरक्षित.

चेतावनी

  • लॉगिन पृष्ठ और पंजीकरण पृष्ठ दोनों को HTTPS का उपयोग करना चाहिए इस आलेख में लिपियों आपको ऐसा करने के लिए बाध्य नहीं करते हैं, और इसका उपयोग करना बंद करना वास्तव में आसान है। लेकिन ध्यान रखें कि इन स्क्रिप्ट का इस्तेमाल उत्पादन वातावरण में नहीं किया जा सकता है, जो कि HTTPS का उपयोग किए बिना।
  • सुनिश्चित करें कि PHP स्क्रिप्ट उपयोगकर्ता के लिए अदृश्य है, जो गलत सर्वर स्थापना के कारण स्क्रिप्ट को देख सकता है। उपयोगकर्ता अपने डाटाबेस के बारे में जानकारी इकट्ठा कर सकते हैं जैसे नाम और पासवर्ड यदि उनके PHP कोड दृश्यमान है। आदर्श रूप से, किसी भी स्क्रिप्ट को अन्य स्क्रिप्ट या पेजों में शामिल किया गया है सर्वर की फ़ाइल सिस्टम के बाहर एक निर्देशिका में स्थित है और रिश्तेदार पथ का उपयोग करते हुए संदर्भ के रूप में उपयोग किया जाता है, जैसे कि `../../includes/mycript .inc.php `
  • कुछ भी नहीं 100% सुरक्षित है अपनी जांच की सुरक्षा में सुधार जारी रखने के लिए नवीनतम सुरक्षा खबरों पर अद्यतित रहना याद रखें।
  • इस स्क्रिप्ट के एंटी ब्रूट फोर्स, जो एक यूज़र अकाउंट ब्लॉक करता है, आसानी से गलत इस्तेमाल किया जा सकता है। हम गंभीरता से अनुशंसा करते हैं कि आप कैप्चा जैसी विरोधी-क्रूर तकनीक का उपयोग करें
  • आप इस लेख की तुलना में ज़ेंड 2, सिम्फनी या केक पीएचपी जैसी ढांचे का उपयोग करके एक बेहतर समाधान पा सकते हैं। वे सभी प्रवेश प्रक्रिया को सुरक्षित रखने के लिए सुरक्षित सत्रों और मॉड्यूल के लिए संरचना प्रदान करते हैं। ध्यान दें कि यदि आप एक ढांचे का उपयोग करते हैं, तो बेहतर अनुप्रयोग लिख सकते हैं।
  • ब्रेट फोर्स और डूएस हमलों को मुश्किल बनाने के लिए हम आपको लॉगिन पृष्ठ पर कैप्चा का उपयोग करने के लिए सलाह देते हैं। हम अनुशंसा करते हैं कि कैप्चा दो असफल प्रयासों के बाद फ़ॉर्म पर दिखाई देते हैं। यह अभी तक हमारे कोड में लागू नहीं है
सामाजिक नेटवर्क पर साझा करें:

संबद्ध
© 2021 IhsAdke.com