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

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


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

कदम

विधि 1

अपने सर्वर को कॉन्फ़िगर करें
1
अपने सर्वर पर PHP प्लेटफ़ॉर्म और MySQL डाटाबेस स्थापित करें।
छवि शीर्षक Php mysql.jpg

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

विधि 2

एक MySQL डाटाबेस कॉन्फ़िगर करें
1
MySQL डाटाबेस बनाएँ
यह गाइड `secure_login` नामक एक डेटाबेस बनाएगा
अपना डेटाबेस बनाने के लिए नीचे दिए गए SQL कोड का उपयोग करें

डेटाबेस बनाने के लिए SQL कोड:
डाटाबेस बनाना `सुरक्षित_लागिन`-

नोट: कुछ होस्टिंग सेवाएं आपको phpMyAdmin इंटरफ़ेस का उपयोग करते हुए एक डेटाबेस बनाने की अनुमति नहीं देते हैं, इसलिए cPanel का उपयोग कर एक mySQL डाटाबेस बनाने के लिए सीखें.
  • 2
    एक उपयोगकर्ता बनाएं जिसे `SELECT`, `UPDATE` और `INSERT` निष्पादित करने के लिए केवल विशेषाधिकार हैं।
    इस तरह, अगर आपकी लिपियों की सुरक्षा में कोई उल्लंघन हुआ है, तो एक हैकर संरचना से या आपके डाटाबेस के डेटा से कुछ भी नहीं हटा सकता है। इस प्रकार के उपयोगकर्ता का उपयोग करके आप अपने आवेदन के साथ जितना चाहें उतना कुछ करने में सक्षम होंगे। यदि आप अपने डेटाबेस की सुरक्षा के बारे में विशेष रूप से चिंतित हैं, तो प्रत्येक फ़ंक्शन के लिए एक अलग उपयोगकर्ता बनाएं।

  • उपयोगकर्ता: "sec_user"
  • पासवर्ड: "eKcGZr59zAa2BEWU"


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

    नोट: ऊपर वर्णित कोड पासवर्ड को अनुकूलित करना एक अच्छा विचार है जब आप इसे अपने सर्वर पर चलाते हैं। इसके अलावा, कृपया PHP कोड बदलना सुनिश्चित करें। याद रखें कि यह एक ऐसा पासवर्ड नहीं है जो आपको आसानी से याद रखना होगा ताकि जितना संभव हो उतना जटिल हो सके। इस पते पर आप एक यादृच्छिक पासवर्ड जनरेटर मिलेगा
  • 3
    `सदस्य` नामक एक MySQL तालिका बनाएं
    निम्नलिखित कोड 5 फ़ील्ड (आईडी, उपयोगकर्ता नाम, ईमेल, पासवर्ड, नमक) से युक्त तालिका बनायेगा।

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

    हम उन क्षेत्रों के लिए डेटा प्रकार `सीआरएआर` का इस्तेमाल करते हैं जिनके आकार को जाना जाता है। `पासवर्ड` और `नमक` के लिए 128 अक्षरों का अधिकतम आकार इस्तेमाल किया गया था। `सीआरएआर` डेटा प्रकार का उपयोग करते हुए, आप CPU उपयोग पर बचत करेंगे।
  • 4
    लॉग तालिका बनाता है जो सभी लॉगिन प्रयासों को संग्रहीत करेगा।
    हम इस तालिका को `ब्रूट बल` पर आधारित एक हमले को रोकने के लिए सभी उपयोगकर्ता लॉगिन प्रयासों को संग्रहीत करने के लिए बनाया है।

    मेज बनाने के लिए कोड `login_attempts`:
    टैबलेट `सुरक्षित _ लॉगिन `। लॉगिन_टाइटम्प्स` (` यूज़र_आईडी` आईएनटी (11) नाउल, `टाइम` VARCHAR (30) नहीं नल बनाएँ) इंजन = इंनोडीबी
  • 5
    `सदस्य` तालिका में एक डाटा एंट्री टेस्ट करें
    चूंकि हमने नए उपयोगकर्ताओं को पंजीकृत करने के लिए कोई पृष्ठ नहीं बनाया है, इसलिए लॉगिन स्क्रिप्ट की मजबूती और दक्षता का परीक्षण करना महत्वपूर्ण होगा। नीचे आपको निम्न विवरण के साथ उपयोगकर्ता बनाने के लिए एसक्यूएल स्क्रिप्ट मिलेगी:
  • प्रयोक्ता नाम: test_user
  • ई-मेल पता: [email protected]
  • पासवर्ड: 6ZaxN2Vzm9NUJT2y

  • उपयोगकर्ता `परीक्षण उपयोगकर्ता` जोड़ें:
    जांच `secure_login`.`members` मान (1, `test_user`, `[email protected]`, `00807432eae173f652f2064bdca1b61b290b52d40e429a7d295d76a71084aa96c0233b82f1feac45529e0726559645acaed6f3ae58a286b9f075916ebf66cacc`, `f9aab579fc1b41ed0c44fe4ecdbfcdb4cb99b9023abb241a6db833288f4eea3c02f76e0d35204a8695077dcf81932aa59006423976224be0390395bae152d4ef`) डालें -

    विधि 3

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

    डेटाबेस कनेक्शन के लिए PHP कोड (`db_connect.php`):
    परिभाषित करते हैं ("होस्ट", "स्थानीय होस्ट") - // यह वह सर्वर है जिसे आप कनेक्ट करना चाहते हैं।"उपयोगकर्ता", "sec_user") - // यह उपयोगकर्ता है जिसके साथ आप डीबी.डिफ़ाईन से कनेक्ट होंगे ("पासवर्ड", "eKcGZr59zAa2BEWU") - // DB.define तक पहुंचने के लिए पासवर्ड ("डाटाबेस", "secure_login") - // डेटाबेस का नाम $ mysqli = नए mysqli (मेजबान, उपयोगकर्ता, पासवर्ड डेटाबेस) -। // आप, टीसीपी / आईपी का उपयोग कर के बजाय एक यूनिक्स सॉकेट का उपयोग करने का कनेक्ट हो रहे हैं, के लिए इसी पैरामीटर जोड़ने के लिए याद पोर्ट नंबर

    विधि 4

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

    ये कार्य लॉग-इन स्क्रिप्ट को ठीक से निष्पादित करने के लिए किए जाने वाले सभी कार्यों का आधार होगा। इन सभी फ़ंक्शंस को `फ़ंक्शन.फपी` नामक पृष्ठ पर जोड़ें

    1
    एक सुरक्षित PHP सत्र प्रारंभ करें
    यह महत्वपूर्ण है कि आप प्रत्येक सत्र की शुरुआत में `session_start () -` फ़ंक्शन का उपयोग न करें जो कि आप PHP सत्र के भीतर उपयोग करेंगे यदि आप वास्तव में आपके सिस्टम की सुरक्षा के बारे में परवाह करते हैं, तो यहां बताया गया है कि आपको इस कोड के इस खंड को कैसे लागू करना चाहिए। हम `sec_session_start` नामक फ़ंक्शन बनाने जा रहे हैं जो एक संरक्षित php सत्र बनाएगा। आपको इस फ़ंक्शन को प्रत्येक पृष्ठ की शुरुआत में कॉल करना होगा, जिसमें एक सत्र चर का उपयोग करना आवश्यक है। यदि आप सुरक्षा और अपनी कुकी में संग्रहीत डेटा की गोपनीयता के बारे में बहुत चिंतित हैं, तो अधिक एक प्रणाली PHP और MySQL के आधार पर के साथ एक सुरक्षित सत्र के प्रबंधन के लिए वेब पर खोज कर विषय पढ़ा।

    एक सुरक्षित PHP सत्र बनाने के लिए फ़ंक्शन से संबंधित कोड:
    sec_session_start function () {$ session_name = `sec_session_id`- // एक सत्र नाम $ सेट सुरक्षित = FALSE- // सच करने के लिए पैरामीटर सेट आप उपयोग करना चाहते हैं` https `प्रोटोकॉल केवल Http $ = सच -। // यह कर पाएगा // सत्र के लिए मजबूर केवल कुकीज़ का उपयोग करने के लिए $ cookieParams session_get_cookie_params = () - -। // संबंधित वर्तमान मापदंडों पढ़ें एक जावास्क्रिप्ट ( `session.use_only_cookies`, 1) sessione.ini_set की आईडी का उपयोग करने में सक्षम हो एआई कुकी। सत्र_सेट_cookie_params ($ कुकी पर्म ["जीवनकाल"], $ कुकीप्रम ["पथ"], $ कुकीप्रम ["डोमेन"], $ सुरक्षित, $ Http) -session_name ($ session_name) - // एक funzione.session_start () की शुरुआत में चुना के साथ सत्र का नाम सेट करें - // php.session_regenerate_id सत्र () शुरू होता है - // पुनः जेनरेट सत्र और जिसे आपने पहले बनाया था उसे हटा दें।}

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

    नोट: अगर आप अपने लॉगिन आवेदन के लिए `https` प्रोटोकॉल का प्रयोग कर रहे हैं, तो याद रखें कि `$ सुरक्षित` को `सच्चा` के रूप में निर्धारित करें।
  • 2
    लॉगिन फ़ंक्शन बनाएं
    यह फ़ंक्शन ई-मेल पते और पासवर्ड को डेटाबेस में संग्रहीत उन लोगों के साथ तुलना करेगा, जो मैच के मामले में `सत्य` लौटाएगा।

    सुरक्षित लॉगिन फ़ंक्शन:
    समारोह लॉगिन ($ ईमेल, $ पासवर्ड, $ mysqli) {// एसक्यूएल बयान का उपयोग करते हुए `तैयार` हमले injection.if किसी SQL प्रकार ($ stmt = $ mysqli- लागू नहीं होगा>तैयार ("चुनें आईडी, यूज़रनेम, पासवर्ड, नमक सदस्यों से जहां ईमेल =? LIMIT 1")) {$ stmt->bind_param (`s`, $ email) - // पैरामीटर `$ email` को बांधता है। $ stmt->execute () - // नव निर्मित क्वेरी को निष्पादित करता है। $ stmt->store_result () - $ stmt->bind_result ($ user_id, $ username, $ db_password, $ नमक) - // क्वेरी का परिणाम पुनर्प्राप्त करता है और इसे अपने चर में संग्रहीत करता है। $ stmt->fetch () - $ password = hash (`sha512`, $ पासवर्ड। $ नमक) - // एक अनन्य कुंजी का उपयोग करके पासवर्ड को एन्क्रिप्ट करता है .if ($ stmt->NUM_ROWS == 1) {// यदि उपयोगकर्ता // हम जांच लेंगे कि वहाँ भी कई एक्सेस के प्रयास errati.if (checkbrute ($ user_id, $ mysqli) == सच) के निष्पादन निम्नलिखित अक्षम नहीं है {// खाता विकलांग // आप और चेतावनी है कि आपके खाते disabilitato.return कर दिया गया है FALSE-} एक ईमेल भेजें {if ($ db_password == $ पासवर्ड) {// कि पासवर्ड डेटाबेस में संग्रहीत द्वारा प्रदान पासवर्ड से मेल खाता है की जाँच करें `उपयोगकर्ता। पासवर्ड सही! $ User_browser = $ _SERVER `[` HTTP_USER_AGENT `] -। // वर्तमान उपयोगकर्ता $ user_id = preg_replace के लिए पैरामीटर` उपयोगकर्ता-एजेंट `पुनः प्राप्त ("/ [^ 0-9] + /", "", $ user_id) - // हमें एक हमले से बचाव XSS $ _SESSION [`user_id`] = $ user_id- $ username = preg_replace ("/ [^ एक-zA-Z0-9 _ -] /", "", $ उपयोगकर्ता नाम) - // हम अपने आप को एक हमले XSS $ _SESSION से बचाने [ `उपयोगकर्ता नाम`] = $ उपयोगकर्ता नाम - $ _ सत्र [ `login_string`] = हैश ( `SHA512`, $ पासवर्ड $ User_browser) -। // लॉग इन निष्पादित success.return true-} else {// गलत पासवर्ड .// हम डेटाबेस में विफल प्रयास रिकॉर्ड। $ अब = समय () - $ mysqli->क्वेरी ("प्रवेश लॉगिन में प्रवेश करें (उपयोगकर्ता_आईडी, समय) मूल्य (`$ user_id`, `$ अब`)") -छोटे झूठी-}}} अन्य {// उपयोगकर्ता में मौजूद नहीं है। झूठी झूठी -}}}
  • 3
    का उपयोग कर किसी हमले को रोकने के लिए फ़ंक्शन "जानवर बल"।
    ब्रूट-बल वाले साइबर हमले तब होते हैं जब एक हमलावर एक विशिष्ट खाते का उपयोग करके एक प्रणाली तक पहुंचने के लिए हजारों प्रयास करता है, यादृच्छिक पासवर्ड उत्पन्न करता है या उन्हें एक शब्दकोश से पुनर्प्राप्त करता है हमारी स्क्रिप्ट में, यदि कोई उपयोगकर्ता लगातार 5 असफल लॉगिन प्रयास करता है, तो उसका खाता अक्षम हो जाता है

    `चेकबूट` फ़ंक्शन बनाएं:
    checkbrute समारोह ($ user_id, $ mysqli) {// पुनः प्राप्त टाइमस्टैम्प $ अब समय () = -। // यह पिछले दो घंटे से सभी प्रवेश करने के प्रयासों का विश्लेषण करती है valid_attempts $ = $ अब - (2 * 60 * 60 ) -इफ़ ($ stmt = $ mysqli->तैयार ("Login_attempts से समय का चयन करें WHERE user_id =? और समय > `$ Valid_attempts`")) {$ stmt->bind_param (`i`, $ user_id) - // निर्मित क्वेरी चलाएं। $ stmt->निष्पादित () - $ stmt->store_result () - // मैं 5 से अधिक लॉगिन प्रयासों के अस्तित्व की पुष्टि करता है। यदि ($ stmt->NUM_ROWS > 5) {रिटर्न सच-} और {वापसी- झूठी}}}}


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



  • 4
    लॉगिन स्थिति की जांच करें।
    ऐसा करने के लिए हमें सत्र चर `user_id` और `login_string` की जांच करने की आवश्यकता है। सत्र चर `login_string` लॉगिन पासवर्ड के साथ उपयोगकर्ता के ब्राउज़र-एन्कोडेड जानकारी को संग्रहीत करता है हम ब्राउज़र जानकारी का उपयोग करते हैं क्योंकि यह बहुत ही संभावना नहीं है कि उपयोगकर्ता सत्र के दौरान इसे बदल देगा। यह दूरदर्शिता हमें रिश्तेदार आक्रमण को रोकने के लिए मदद करती है सत्र अपहरण.

    `Login_check` फ़ंक्शन बनाएँ:
    समारोह login_check ($ mysqli) {// की जाँच करें कि सभी सत्र चर correttamenteif सेट कर रहे हैं (isset ($ _ सत्र [ `user_id`], $ _ सत्र [ `उपयोगकर्ता नाम`], $ _ सत्र [ `login_string`])) {$ user_id = $ _SESSION [ `user_id`] - $ login_string = $ _ सत्र [ `login_string`] - $ उपयोगकर्ता नाम = $ _ सत्र [ `उपयोगकर्ता नाम`] - $ user_browser = $ _SERVER `[` HTTP_USER_AGENT `] - // स्ट्रिंग` को पुन: प्राप्त उपयोगकर्ता- एजेंट `dell`utente.if ($ stmt = $ mysqli->तैयार ("सदस्य का चयन पासवर्ड कहाँ आईडी =? LIMIT 1")) {$ stmt->bind_param (`i`, $ user_id) - // पैरामीटर `$ user_id` को बांधता है। $ stmt->execute () - // बनाया क्वेरी चलाएँ। $ stmt->store_result () - अगर ($ stmt->num_rows == 1) {// यदि उपयोगकर्ता मौजूद है $ stmt->bind_result ($ password) - // प्राप्त परिणाम से चर प्राप्त करें। $ stmt->लाने () - $ login_check = हैश (। `SHA512`, $ पासवर्ड $ user_browser) -यदि ($ login_check == $ login_string) और {// सच लॉगिन रन लौट !!!!} {// कोई झूठी eseguitoreturn लॉगिन -}} else {// कोई eseguitoreturn FALSE-}} किसी और लॉगिन {// कोई eseguitoreturn FALSE-}} किसी और लॉगिन {// कोई eseguitoreturn FALSE- लॉगिन}}
  • विधि 5

    प्रक्रिया प्रबंधन पन्ने बनाएँ
    1
    उस पृष्ठ को बनाता है जो लॉग इन करेगा (process_login.php)।
    यदि आप हमारे पिछले उदाहरणों का पालन करते हैं, तो पृष्ठ को `process_login.php` कहा जाएगा।
    हम विस्तार में शामिल PHP फ़ंक्शन का उपयोग करेंगे mysqli_ * mysql का, क्योंकि यह सबसे अधिक अप-टू-डेट प्रतीत होता है

    लॉगिन पृष्ठ कोड बनाएं (process_login.php)
    शामिल functions.php`-sec_session_start `db_connect.php`-शामिल` () - // (isset ($ _ पोस्ट [ `ईमेल`], $ _POST [ `पी`])) हम सत्र sicuraif एक php लांच करने के लिए हमारे फ़ंक्शन का उपयोग करें {$ ईमेल = $ _POST [ `ईमेल`] - $ पासवर्ड = $ _POST [ `पी`] - // criptata.if पासवर्ड (लॉगिन ($ ईमेल, $ पासवर्ड, $ mysqli) == सच होती है) {// लॉगिन eseguitoecho `सफलता: आप में लॉग इन किया गया है` - else} {// लॉग इन fallitoheader ( `स्थान: ./login.php?error=1`)-}} else {// सही चर के लिए भेजा नहीं किया गया है POST.echo `अमान्य अनुरोध` -} विधि से यह पृष्ठ

  • 2
    लॉगआउट स्क्रिप्ट बनाएं
    आपकी लॉगआउट स्क्रिप्ट में एक सत्र शुरू होना चाहिए, इसे नष्ट करना और फिर किसी अन्य पृष्ठ पर रीडायरेक्ट करना होगा।

    लॉगआउट स्क्रिप्ट (logout.php) के लिए कोड बनाएं:
    । // सत्र के सभी मान हटाएं $ _ सत्र = सरणी () - - `functions.php`-sec_session_start () भी शामिल है। // पुनः प्राप्त सत्र मापदंडों session_get_cookie_params $ पैरामीटर = () - // कुकीज़ attuali.setcookie हटाएं (session_name (), `, समय () - 42000, $ पैरामीटर ["पथ"], $ परम ["डोमेन"], $ परम ["सुरक्षित"], $ परम ["केवल Http"]) - // सत्र सत्र रद्द करें () - हैडर (`स्थान:।``- `

    नोट: इस समय यह `सीएसआरएफ` सुरक्षा जोड़ने के लिए एक अच्छा विचार हो सकता है ऐसा करने से, यदि कोई व्यक्ति इस छिपे हुए पृष्ठ के पते पर पहुंचने में सफल रहता है, तो उपयोगकर्ता डिस्कनेक्ट हो जाएगा।
  • 3
    पंजीकरण पृष्ठ
    पासवर्ड को एन्क्रिप्ट करने के लिए हमें निम्न कोड का उपयोग करना होगा:

    पासवर्ड हैशिंग स्क्रिप्ट:
    । // एंट्री फॉर्म से एन्क्रिप्टेड पासवर्ड पुनः प्राप्त $ पासवर्ड = $ _POST [ `पी`] - // एक यादृच्छिक कुंजी $ random_salt = हैश ( `SHA512`, uniqid बनाएँ (mt_rand (1 mt_getrandmax ()), सच) ) - // एक पासवर्ड आपने अभी बनाया कुंजी का उपयोग कर हैश ( `SHA512`, $ पासवर्ड बनाएँ $ पासवर्ड = $ random_salt) -।। // अपने डेटाबेस में सम्मिलित करें कथन निष्पादित करने के लिए इस बिंदु पर अपने एसक्यूएल कोड शामिल करें // आप का उपयोग सुनिश्चित करें SQL कथन `तैयार`। ($ Insert_stmt = $ mysqli->तैयार ("सदस्यों में शामिल करें (उपयोगकर्ता नाम, ईमेल, पासवर्ड, नमक) मूल्य (?,?,?,?)")) {$ insert_stmt->bind_param (`ssss`, $ username, $ email, $ password, $ random_salt) - // परिणामी क्वेरी चलाएं। $ insert_stmt->निष्पादित () -}

    सुनिश्चित करें कि `$ _POST [` p `]` पैरामीटर का मान पहले से जावास्क्रिप्ट का उपयोग कर एन्क्रिप्ट किया गया है। यदि आप इस विधि का उपयोग नहीं करते हैं, क्योंकि आप सीधे सर्वर पर पासवर्ड को मान्य करना चाहते हैं, सुनिश्चित करें कि यह एन्क्रिप्ट किया गया है।
  • विधि 6

    जावास्क्रिप्ट फ़ाइलें बनाएं
    1
    फ़ाइल `sha512.js` बनाएँ
    यह फ़ाइल जावास्क्रिप्ट के लिए `sha512` एन्कोडिंग एल्गोरिथ्म का कार्यान्वयन है। हम एन्कोडिंग फ़ंक्शन का उपयोग करेंगे ताकि हमारे पासवर्ड स्पष्ट पाठ में नहीं भेजे जा सकें।

    फ़ाइल को pajhome.org.uk वेबसाइट से डाउनलोड किया जा सकता है
  • 2
    फ़ाइल `forms.js` बनाएँ
    यह फाइल सभी रूपों के लिए पासवर्ड को एन्कोड करेगी।

    `Forms.js` फ़ाइल की जावास्क्रिप्ट के लिए कोड:
    फ़ंक्शन formhash (फ़ॉर्म, पासवर्ड) {// एक इनपुट तत्व बनाएं जिसका उपयोग एन्क्रिप्ट किए गए पासवर्ड के लिए आउटपुट फ़ील्ड के रूप में किया जाएगा। v p = document.createElement ("इनपुट") - // अपने फार्म में एक नया तत्व जोड़ें.एम्फो। बिंब (पी) -पी.नाम = = "पी"-p.type = "छिपा हुआ"p.value = hex_sha512 (password.value) - // सुनिश्चित करें कि पासवर्ड cleartext.password.value = में नहीं भेजा गया है ""- // एक अंतिम चरण के रूप में, `submit` form.form.submit () चलाएं -}
  • विधि 7

    एचटीएमएल पेज बनाएँ
    छवि शीर्षक वाला स्क्रीन स्क्रीन शॉट 2013 02 08 पर 17.55.56
    1
    लॉगिन फॉर्म बनाएं (login.php)।

    यह एक एचटीएमएल फार्म से बना होगा जिसमें `ई-मेल` और `पासवर्ड` नामक दो इनपुट फ़ील्ड शामिल होंगे। जावा स्क्रिप्ट पासवर्ड एन्कोडिंग का ध्यान रखेगा और सर्वर को पैरामीटर `ईमेल` और `पी` (एन्क्रिप्टेड पासवर्ड) भेज देगा।

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

    एचटीएमएल में लॉगइन फार्म बनाने के लिए कोड:

    नोट: यहां तक ​​कि अगर हमने पासवर्ड को एन्क्रिप्ट किया है, तो यह स्पष्ट पाठ में नहीं भेजा गया है, तो यह सर्वर पर पासवर्ड भेजने के लिए `https` प्रोटोकॉल (टीएलएस / एसएसएल) का उपयोग करने के लिए अनुशंसित है। (इस दस्तावेज के संबंध में देखें `इव्देड्रोपिंग नेटवर्क`)।

    विधि 8

    पेजों का संरक्षण
    1
    पृष्ठ संरक्षण के लिए स्क्रिप्ट
    प्रमाणीकरण प्रणाली में पाए जाने वाले सबसे सामान्य समस्याओं में से एक यह है कि डेवलपर्स यह सत्यापित करना भूल जाते हैं कि उपयोगकर्ता वास्तव में सिस्टम में `लॉग इन` है यह बहुत महत्वपूर्ण है कि आप निम्न कोड का उपयोग यह सत्यापित करने के लिए कि उपयोगकर्ता ने सफलतापूर्वक लॉग इन किया है।
    पृष्ठों तक पहुंच की सुरक्षा के लिए कोड:
    // कोड में इस बिंदु डालें डीबी और विभिन्न funzioni.sec_session_start () का उपयोग करने के लिए कनेक्ट करने के लिए - {! अपने पृष्ठों की सामग्री // यहाँ} अगर (login_check ($ mysqli) == सच) वरना { गूंज `आप इस पेज को एक्सेस करने के लिए अधिकृत नहीं हैं, कृपया लॉगिन करें 
    `-}


    यह सुनिश्चित करने के लिए इस सुविधा का उपयोग करना सुनिश्चित करें कि उपयोगकर्ता सिस्टम में लॉग इन हो।

    अनुशंसित रीडिंग

    टिप्स

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

    चेतावनी

    • कंप्यूटर दुनिया में 100% सुरक्षित और अभेद्य नहीं है। अपनी स्क्रिप्ट्स में सही बदलावों को लागू करने के लिए तैयार होने के लिए, अपने आप को सुरक्षा के मामले में हमेशा अपडेट करना याद रखें, सभी नवीनतम समाचार पढ़ना।
    • स्क्रिप्ट जो ब्रूट बल हमलों को लॉन्च करने के लिए उपयोग किए गए प्रयोक्ता अकाउंट को निष्क्रिय करके हमलों से रोकता है, वह गलत तरीके से इस्तेमाल किया जा सकता है। एक स्क्रिप्ट बनाएं जो हर घंटे चलता है और सभी `अज्ञात उपयोगकर्ताओं` और असफल लॉगिन (`bad_password`) को एक तालिका में दर्ज करें। 5 असफल प्रयासों के बाद उपयोगकर्ता को अक्षम करने के लिए स्क्रिप्ट सेट करें
    • सुनिश्चित करें कि उपयोगकर्ता आपकी PHP स्क्रिप्ट देख सकें, जो गलत सर्वर कॉन्फ़िगरेशन के कारण हो सकता है। अगर आपका PHP कोड दिखाई दे रहा है, तो दुर्भावनापूर्ण लोगों द्वारा, आपके डाटाबेस और उनकी पासवर्ड पहुंच के बारे में जानकारी एकत्र करने के लिए वास्तविक संभावना है।

    आप की आवश्यकता होगी चीजें

    Mysqli_ * एक्सटेंशन में शामिल mysqli_ * एक्सटेंशन में शामिल PHP वर्गों का उपयोग करने के लिए, आपको निम्न PHP और mySQL संस्करणों का उपयोग करने की आवश्यकता होगी

    • PHP छंद 5 या बाद में
    • MySQL संस्करण 4.1.3 या बाद का संस्करण

    अपने सर्वर पर स्थापित PHP और mySQL के संस्करण की जांच करने के लिए निम्न PHP फ़ंक्शन का उपयोग करें phpinfo ().

    सामाजिक नेटवर्क पर साझा करें:

    संबद्ध

    © 2011—2022 GnuMani.com