0:00
So guys, आज के इस वीडियो में जो चीज मैं आप लोगों को बताने वाला हूँ
0:02
वो ये React Application, जो की हमारी iNotebook App है, उसको लेकर बहुत सत इंपोर्टेंट होने वाली है
0:07
और अगर आप लोगों को ये जानकारी नहीं मैंने दी, तो आप लोगों को लगेगा कि यार चीज़े हवा में उड़ रही है�
0:12
इसलिए मैं चाहता हूँ कि आप लोगों को इस जानकारी दे दू तो जल्दी से हम लोग whiteboard के अंदर आएंग�
0:16
और whiteboard में आने के बाद कुछ बातें आप लोगों से मैं करूँगा जो की definitely sense बनाएंगे आप लोगों क�
0:21
तो यहाँ पर मैं आप लोगों को बताना चाहता हूँ कि मान लो कि आपके पास एक authentication system ह�
0:26
यानि कि आप username और password को store कर रहे हो तो मान लो कि कुछ इस तरह से आपके पास एक database ह�
0:34
यह आपका database है मैं इसको db बोल देता हूँ और इस database के अंदर आपके बास definitely कुछ tables होंग�
0:39
लेटर से आपके पास username है तो मैं आपके पास username नाम से बना देता हू�
0:43
फिर password आपके पास होगा and so on ठीक है आपके पास username password वगरा आपने store किया ह�
0:48
मान लो username हैरी है और मान लो की जो password है हमार�
0:53
मान लो मैंने password रखा हुआ है H-A-R-1-DOLLAR ठीक है मान लो मैंने H-A-R-1-DOLLAR लिखा हुआ है password
1:00
और उसी के साथ सब मान लो मैंने इसमें at the rate भी एक end में लगा दिया ठीक ह�
1:04
तो ये मान लो मेरा password है अब होता क्या है मान लो मेरी ये web application ह�
1:08
ये मेरी web application है और इस web application से मैं यहाँ पर एक back-end में connect कर रहा हू�
1:14
जो कि मेरे database से connect करके password वगैरा verify कर रहा है ठीक ह�
1:18
अब होता क्या है कि एक attacker आता है यह attacker दिखने में बहुत सीधा लग रहा है इसलिए इसको थोड़ा खतरनाक बनाते है�
1:24
और ये attacker क्या करता है, इसकी बिलकुल भी रादे नेक नहीं है, ये attack कर देता है यहाँ पर, इस database के अंदर, और सारा का सारा password और username आपकी user के लिए लेता है, ठीक है, जिस तरह से Harry username और password stored है, उसी के साथ साथ क्या होगा, और भी बहुत सारे username और password store होंगे, ठीक है, आपकी website �
1:54
username यह पासवर्ड डालेगा और डालने के बाद आपकी सिस्टम को एक्सेस कर लेगा आज द यूजर लॉग इन कर लेगा और आ�
2:01
हो जाओगे क्या है कि ठीक है आपको है कर लिया जाएगा ठीक है लेकिन हम नहीं चाहते कि यार हम है तो इसे बचन�
2:09
हम लोग क्या करते हैं कि पासवर्ड को डेटाबिस में स्टोर नहीं करते हैं अगर आप लोगों याद हो तो मैंने बताया था कि पासवर्ड को प्लेन टेक्स में स्टोर नहीं करेंगे हम करते क्या है कि मालो यह आपका बैकेंड है मैं आपर इस चीज को अभी दुबारा से ल�
2:39
आपका अलग जगा पर भी हो सकता है for example अगर आ�
2:44
MongoDB Atlas यूज़ कर रहे हैं तो Atlas मैं Compass की बात नहीं कर रहा हू�
2:47
Atlas की बात कर रहा हूँ MongoDB on the Cloud होता है तो आपका जो database
2:52
होगा वो कहीं और होगा तो आपका back-end आपके database से बात करेगा ठीक ह�
2:56
और आपका client आपके back-end से बात करेगा, ठीक है, अमान लो कि आपने username और password
3:03
URP लिख रहा हूँ यहाँ पर मैं, जगा बचाने के लिए, URP बार लो, username और password आपने दिया, तो आपके back-end को बताना होगा क�
3:09
कि क्या correct credentials हैं कि नहीं हैं, और क्या आपको login किया जाए हैं नहीं किया जाए
3:14
आपको authentication token दिया जाए कि नहीं दिया जाए, तो होगा क्या, कि यह back-end यहाँ पर
3:19
आपका जो username है, और password जो है, password का hash बना लेगा
3:24
अब यह hash क्या होता है, इसके बारे में मैं आप लोग को बदाता हूँ, जो hash होता है, वो एक one way function होता है, ठीक है, अगर मैं यहाँ पर इसको hash कह दू, तो यह एक one way function है, one way function का मतलब क्या, कि मान लो यह मेरा password है, ठीक है, तो अगर मैं यह string इस function को दूँगा, तो यह मुझे कोई जिस तरह का एक output द�
3:54
अब अगर मैंने password को harry की जगा सिर्फ एक character उसमें बदल दिय�
4:00
हैरा कर दिया अगर मैंने तो क्या होगा कि यही function मुझे एकदम completely different
4:06
string देगी ठीक है एकदम different रहेगी लेकिन वो भी 10 character
4:09
की string रहेगी यह बात समझना यह पर जरूरी है और एक बा�
4:13
और जो समझना जरूरी है वो यह है कि अगर मेरे पास ये string ह�
4:17
string password database hack password hash string
4:31
और hash वाली string अगर आप डालोगे तो hash का hash कुछ और generate हो जाएग�
4:35
तो कभी भी password match नहीं होगा मेरी बात समझ रहो आप नहीं समझ रहो जैसे मान लो मेरे क्लाइट पर कोई आता ह�
4:40
उसने username है और मेरा password जो है यहाँ पर डाला अगर उसने correct password डाल दिया त�
4:44
बैकेंड जो है match कर लेगा बैकेंड का काम क्या होगा लॉगिन के टाइम प�
4:48
back-end क्या करेगा, जो password enter किया गया है, उसका भी hash बनाएगा
4:52
और जो hash database में already मौझूद है, उसको निकालेगा, दोनों क�
4:56
match करेगा, अगर hashes match हो रहे हैं, तो login आपको करवा देगा, वरना नही�
4:59
करवाएगा, अगर आपकी database इसमें यहाँ पर attack भी हो जाता है, मान लो यहाँ पर एक ऐसा attack हो गया, कि आप लोगों को यहाँ पर database के अंदर, जितनी भी सारी entries थी आपकी, वो सारी leak हो गई, ठीक है, तो क्या होगा user के पास, in fact hacker के पास, क्या होगा hacker के पास, hacker के पास, harry होगा, username होगा, और password का hash होगा, �
5:32
important है, अब मेरी बात को ध्यान से एक बार और सुनना, क�
5:35
मान लो कि मैंने यहाँ पर यह जो मेरी hash string है, इसको enter किया यहाँ प�
5:42
तो अगर मैं hash का भी hash डालूंगा, तो कुछ और निकलेग�
5:45
अगर मान लो एक function है, जो कि किसी भी number को 2 से multiply कर देता ह�
5:49
तो अगर मैं उस function को 2 दूँगा तो मुझे 4 मिलेगा लेकिन मैं उसको 4 दूँग�
5:53
तो मुझे 4 नहीं मिलेगा मुझे 8 मिलेगा तो अगर आपने यहाँ पर यहाँ पर जो hash ह�
5:57
password की जगह अगर आपने hash दे दिया तो जब यह password back end पर पहुँचेग�
6:03
तो यहाँ पर तो क्या होगा कि hash का hash बन जाएगा जो कि valid नहीं होगा ठीक है तो कभी भी जो hash यहाँ से retrieve किया जाएगा database से उससे यह match नहीं करेगा ठीक है I hope कि मैं समझा पाया यह चीज आप लोगों को तो इससे क्या होता है हम लोग बच जाते हैं लेकिन इतना ही नहीं है क�
6:33
ठीक है पासवर्ड का है ठीक है मान लो यूजरनेम है और सिंप्लिफिकेशन के लिए तीन करेक्टर का चार करेक्टर का है तेरा वन बीडी मान लो यह पासवर्ड का है जो बैसे यह काफी बड़ा है शोता है एक एमडी फाइब करके है शिंग अलग और इतना अलग तरह के ह�
7:03
7, 8D इसका hash है, ठीक है, 1, 2, 3, 4, 5, हाँ, यह 5 characters का hash है, अब क्या हुआ, कि यह hacker बड़ा चालाक है, ठीक है, यह इसको मैं चालाक बना देता हूँ, वो जो होता है न, pirates of the caribbean वाला इसको पिना देता हूँ, और यह क्या है, कि यह hacker, ठीक है, इसका वो भी बना देता हूँ, य�
7:33
पूरी की पूरी जो common passwords हैं, common passwords हैं, उसने क्या किया, इनके hash already compute करके रखे हुए हैं, और इसके पास 3 billion hashes हैं, यानि कि इसके पास एक table है, एक ऐसी table है, जिसके अंदर एक तो हमारे पास password है, और एक hash है, तो कौन सा hash कौन से password से आया है, ये बंदा अपनी table में look up करके बता दे�
8:03
लो इसको यह है मिल गया शुब का और मान लो शुब कोई कॉमन पासवर्ड यूज कर रहा है तो यह देख लेगा कि 1778
8:09
इसकी टेबल में कहां पर है मान लो डी ओ सी करके कोई पासवर्ड है बहुत सिंपल सा वह शुब ने रखा हुआ है त�
8:15
hash search rainbow table password hash user password user account login
9:12
गए अब salt का concept भी बताता हूँ I hope कि यह concept आप समझ गए औ�
9:16
इसका जो limitation यह इसकी limitation थी इसकी यह भी आप लोग समझ गए तो यह limitation थी इस चीज�
9:22
की ठीक है अब यहाँ पर देखते जाओ आपकी इस limitation को कैसे दूर किया जाता है अ�
9:28
जो website का administrator वो तो परिशान हो जाएगा, वो बोलेगा कि यार ये तो बड़ा नाटक हो गया, बोलेगा कि नहीं बोलेगा, कहेगा यार ये तो मतलब मेरा तो पुरा ही बांडा फूट गया यहाँ पर, मेरे यूजर जो की common password रखते थे, अब तो वो rainbow tables जो है hacker यूज करेंगे अपनी और �
10:00
उसको मैंने रख दिया Harry ठीक है और जो मेरा password ह�
10:05
उसको मान लो मैंने रख दिया उसको भी Harry रख दिया मैं बेवकुफ निकल�
10:11
ठीक है मैंने उसको भी Harry रख दिया ठीक है और Harry त�
10:14
एक common password हो सकता है क्योंकि ये नाम है एक बहुती common नाम है ठीक ह�
10:18
तो ये जो attacker आएगा ये क्या करेगा जिसके पास पहले स�
10:22
ये attacker लड़की है ठीक है और ये जो attacker आएगी ये यहाँ पर आप लोग देख�
10:29
कि क्या करेगी है इसके पास इसकी rainbow table है ये अपनी rainbow table को पलट लेग�
10:33
एक बार इसने क्या करा सारे common passwords लेकर उनके hash generate कर लि�
10:37
अब इसने अपनी table को पलट लिया hash और password अब इसको पता है कौन से password का hash
10:43
क्या है इसके पास 1,2,3,4 से लेके 3 billion entries है ठीक है तो यह क्या करेग�
10:49
यह यह देखेगी कि अब सुनो इसके पास क्या इसके हाथ क्या लगा ये भी सुन लो पहले ये भी important ह�
10:55
इसके हाथ लग गया इस website की मान लो www.khubsurty.com एक website ह�
11:01
जहाँ पे लोग खुबसूरत होने के लिए आते है khubsurty.com ठीक है तो ये khubsurty.com website जो ह�
11:07
इसकी जो table है इसका जो database है इसका dv इसके हाथ लग गया ह�
11:11
और इसके पास सारे users के username और password के hash ह�
11:14
किसके पास इसका नाम भी रख देते हैं लड़की का मान लो इस लड़की का नाम कीर्टी है ठीक ह�
11:20
कीर्टी दा है कर ठीक है अब कीर्टी क्या करेगी कीर्टी का आप लोग mindset देखेगा ठीक ह�
11:25
कीर्टी क्या करेगी कि इसके पास जो टेबल है rainbow table जिसको बोलते है�
11:30
rainbow table वो हैरी का password एक एक करके सब का password देखेग�
11:36
जैसे ही वो हैरी का password पर आगे वो कहेगी चलो यार हैरी को crack करने की कोशिश करती हू�
11:39
वो किसी को भी crack करने के लिए क्या करेगी उसका username लेगी और उसका username लेने के साथ साथ उसका जो password का hash है जो कि उसको database में मिलेगा इसको password नहीं मालूं कीरती को hash मालूं है बस क्योंकि database में सिर्फ hash store हुआ था यहाँ पर आप लोग देख लो हमने सिर्फ hash store करा था database में आपको मैंने यहाँ पर बताई थी यह बात ठीक ह�
12:11
और उसको password भी पता चल गया, Harry, ठीक है, वो गई गई, अच्छा बेटा, तुमारा password Harry ही था
12:16
वाह, क्या बात है, तो यह khubsulti.com पर login करेगी कीरती, और Harry के account में गुज़ जाएगी
12:22
ठीक है, लेकिन इस website का administrator भी चलाक था, password तो Harry था
12:27
लेकिन इस website की administrator ने क्या करा कि harry के साथ साथ एक salt add कर दिय�
12:33
जो कि कुछ ऐसा दिखता था एक random string of character 1b at the rate c
12:37
ठीक है यह करने से क्या हुआ आप सुनना अब harry का password harry नहीं थ�
12:42
अब harry का password हो गया harry 1b at the rate c अब यह common password नहीं ह�
12:46
harry 1b at the rate c यह common password नहीं है ठीक है तो क्या होगा क�
12:51
जो admin होगा website का वो इस database में तीन चीज़ रखेग�
12:56
username तो रखता ही था password भी रखता था अब वो salt भी रखेग�
13:03
और इस case में salt क्या है इस case में यह है salt username password hash match password hash hash match khusurti login
13:19
मान लो harry ने login करा, harry ने लिखा harry username, और password भी harry लिखा
13:23
back-end automatically ये 1b at the rate c add करेगा, सबसे पहले harry के password में
13:27
इसका hash निकालेगा जो भी hash आया वो इस hash से मिलाएग�
13:32
ये जो hash है इससे match करेगा अगर match हो जाता है तब login
13:35
वरना login नहीं इससे कीर्ती की सिंदगी कैसे खराब हो गई ये सुन�
13:39
अब कीर्ती अपनी rainbow table का इस्तेमाल नहीं कर सकती क्योंकि कीर्ती की rainbow table में hairy तो होग�
13:45
लेकिन कीर्ती की rainbow table में hairy 1b at the rate c
13:49
होने की, होने के chances नहीं है यार, कैसे होगा, और salt क�
13:53
आप जितना बड़ा करोगे तें chances कम होते जाएंगे कीर्ती की table में इस तरह का कुछ होन�
13:56
ठीक है, तो इसलिए salt को डाल देते हैं ताकि security बढ़ जाए
14:00
अब यहाँ पर आप बहुत सारे लोग argue कर सकते हैं, इस बात पर कि यहाँ पर तो आपने जो है
14:05
पूरा का पूरा, आदा password ही expose कर दिया, लेकिन, आदा password expose कर दिया
14:10
लेकिन मैंने rainbow table के usage को बहुत खतरनाक बना दिया, और मैंने password को भी expose नहीं कि यह password तो hairy थ�
14:16
यह salt तो मैंने अपनी तरफ से add करा था back end ने अपनी तरफ से add करा थ�
14:20
तो इस तरह का काम हम लोग करने वाले हैं ताकि हमारी users secure रहे है�
14:24
वरना अगर आपने plain text में store कर दिया password तब दिक्कत हो सकती है ठीक ह�
14:28
क्योंकि अगर plain text में store कर दिया तो hacker को कुछ करना ही नहीं पड़ेग�
14:32
बस database का access मिल जाए बस हो गया काम फिर ठीक है तो ideally तो हम लो�
14:37
database को भी protect करेंगे हम database भी अपना expose नहीं करना चाहते उसी के सा�
14:41
साथ हम ये सारे mechanism password hash और salt को add करना ये भी हम लो�
14:47
रखेंगे तो ये सारे concept जो है हम लोग इस्तेमाल करने वाले ह�
14:51
अब luckily क्या है ना कि इस तरह के concepts हमें from scratch नहीं करन�
14:57
हमें from scratch implement करने की जरूरत नहीं है उसका reason यह है क�
15:02
हमारे note.js ना वो एक बहुत ही खुबसूरत सी चीज है उसमें already एक package होता ह�
15:09
npm में bcrypt.js ठीक है तो bcrypt.js को हम लोग install करेंगे और bcrypt.js
15:15
बहुत सारे काम internally कर लेता है और हमें bcrypt.js के ब�
15:19
कुछ functions को use करना पड़ेगा for example gen salt एक function है जो कि automatically
15:23
हमारे लिए salt generate कर देता है तो bcrypt.js को हम लोग इस्तेमाल करेंग�
15:26
बड़ी ये theory थी कि क्यों इस्तेमाल करेंगे अगर मैं आपको ये नहीं बताता तो बहुत सारे लो�
15:30
ये कहते कि यार ये क्या है वाला ऐसा कर क्यों रहे हैं तो I hope कि आप लोगों समझ में आ गया क�
15:35
ये जो hash है जो कि एक one way function होता है, यहाँ पर लिख भी देता हूँ
15:38
one way होता है, यह reverse नहीं कर सकते, अगर आप harry से इस पर आ सकते हैं
15:43
तो इससे आप harry में वापस नहीं जा सकते, फिर इससे harry में वापस जाने का सिर्फ एकी तरीका है
15:47
वो है rainbow table, कि आप बहुत सारे passwords का पहले से hash
15:51
compute करके रख लें और उसके बाद देखें कि आपका hash कौन से वाले password के hash स�
15:55
match हो रहा है और यह बहुती computationally expensive प्रक्रिया है अब कीर्टी को अगर hacking करनी है तो कीर्टी को क्य�
16:01
करना पड़ेगा कि एक दूसरी rainbow table बनानी पड़ेगी जो की इसके बस की बात नहीं है कि 3 billion
16:21
पेपर को भी बतायेता हूँ क्या होता है पेपर basically क्या होता है कि आ�
16:26
सॉल्ट के आगे भी एक चीज़ आड़ करते हो और वो चीज़ आप बैक एंड में ही रख देते ह�
16:30
उसको डेटा बेस में नहीं देते हो जैसे कि salt को तो हमने यहाँ पर database में store किया
16:34
अब pepper मैं background के अंदर ही hard code कर दूँगा, मैं कहूँगा pepper is equal to b
16:38
मान लो मैं just simplicity के लिए कहना हूँ, pepper is equal to b, अब मैं hash मिलाऊँगा
16:43
hash of password plus salt plus pepper, तो और security पढ़ जाएगी, बट इतना ज़ादा आप लोग focus मत करो इस चीज़ प�
16:49
maybe आप internet पर इसके बारे में और पढ़ सकते हो बट अब लोग continue करने वाले है�
16:53
अपने react codes में अपनी API इसको बनाते हुए तो अगले वीडियो में मिलते हैं औ�
16:58
API इसको continue करते हैं अपने user वाला जो हमने route बनाया है उसको secure करते है�
17:03
अब अगर आप लोगों ने अभी तकी playlist access नहीं कर दिये तो इसको ज़रूर access कर लेना उसी के साथ सा�
17:07
यहां क्लिक करके save करना है इस playlist को यहां क्लिक करके bookmark ज़रूर कर लेन�
17:10
अभी के लिए इस वीडियो में इतने है गैस Thank you so much guys for watching this video
17:14
And I will see you next time