در این مطلب، ویدئو استفاده از Passlib (PBKDF2) در Python/Flask برای هش رمز عبور – Chat App Part8 با زیرنویس فارسی را برای دانلود قرار داده ام. شما میتوانید با پرداخت 15 هزار تومان ، این ویدیو به علاوه تمامی فیلم های سایت را دانلود کنید.اکثر فیلم های سایت به زبان انگلیسی می باشند. این ویدئو دارای زیرنویس فارسی ترجمه شده توسط هوش مصنوعی می باشد که میتوانید نمونه ای از آن را در قسمت پایانی این مطلب مشاهده کنید.
مدت زمان فیلم: 00:14:45
تصاویر این ویدئو:
قسمتی از زیرنویس این فیلم:
00:00:00,530 –> 00:00:03,050
به سری طولانی کد
2
00:00:03,050 –> 00:00:05,959
ایجاد یک برنامه چت خوش آمدید و
3
00:00:05,959 –> 00:00:07,849
از جایی که دفعه قبل متوقف شدیم ادامه پیدا کرد،
4
00:00:07,849 –> 00:00:09,890
بیایید نگاهی بیندازیم که چگونه
5
00:00:09,890 –> 00:00:12,800
اعتبار کاربر را تا کنون در پایگاه داده خود ذخیره می کنیم، درست
6
00:00:12,800 –> 00:00:15,200
مانند نام کاربری که
7
00:00:15,200 –> 00:00:17,660
رمز عبور خود را به صورت ساده در پایگاه داده خود ذخیره کرده ایم. متنی
8
00:00:17,660 –> 00:00:20,329
که بدون هیچ گونه رمزگذاری است، این
9
00:00:20,329 –> 00:00:22,640
روش خوبی نیست، مشتریان ما اغلب می توانند
10
00:00:22,640 –> 00:00:24,710
از رمز عبور مشابه در چندین وب سایت استفاده مجدد کنند،
11
00:00:24,710 –> 00:00:26,929
بنابراین ما باید
12
00:00:26,929 –> 00:00:29,060
مراقب باشیم که رمز عبور متن ساده مشتریان
13
00:00:29,060 –> 00:00:31,279
ما در پایگاه داده ذخیره نشود
14
00:00:31,279 –> 00:00:34,370
تا حتی اگر یک عامل کاربر غیرمجاز
15
00:00:34,370 –> 00:00:36,530
به آن دسترسی پیدا کند. در پایگاه داده،
16
00:00:36,530 –> 00:00:38,570
رمز عبور کاربران نباید به خطر بیفتد،
17
00:00:38,570 –> 00:00:41,090
بنابراین ساده ترین روش استفاده از یک
18
00:00:41,090 –> 00:00:44,120
تابع هش و سپس ذخیره فقط
19
00:00:44,120 –> 00:00:47,000
مقدار در پایگاه داده است، بنابراین مشکل
20
00:00:47,000 –> 00:00:49,490
کاملاً حل نشده است.
21
00:00:49,490 –> 00:00:51,650
22
00:00:51,650 –> 00:00:53,360
23
00:00:53,360 –> 00:00:55,580
فرهنگ لغت محتمل ترین کلمه
24
00:00:55,580 –> 00:00:58,520
عبور یا عبارات عبور و هر کدام را در
25
00:00:58,520 –> 00:01:00,650
یک زمان امتحان کنید تا رمز عبور یک
26
00:01:00,650 –> 00:01:03,500
کاربر یا alt را حدس بزنند. در ابتدا، مهاجم میتواند
27
00:01:03,500 –> 00:01:06,770
28
00:01:06,770 –> 00:01:09,050
با استفاده از تک تک کلیدها به زور وارد
29
00:01:09,050 –> 00:01:11,210
شود تا زمانی که رمز عبور درست پیدا کند،
30
00:01:11,210 –> 00:01:13,040
نقص دیگر در انتهای دیگر
31
00:01:13,040 –> 00:01:16,280
نمودار در پایگاه داده ما است،
32
00:01:16,280 –> 00:01:19,040
اگر کاربر غیرمجاز به پایگاه داده ما یا یک نسخه پشتیبان دسترسی پیدا کند.
33
00:01:19,040 –> 00:01:21,950
آنها می توانند از یک
34
00:01:21,950 –> 00:01:24,260
جدول پیش کامپیوتری برای الگوریتم هش استفاده کنند
35
00:01:24,260 –> 00:01:26,450
که ما از این جداول پیش رایانه ای
36
00:01:26,450 –> 00:01:28,640
جداول رنگین کمان نامیده می شوند و می
37
00:01:28,640 –> 00:01:31,220
توان از آنها برای کار معکوس استفاده کرد تا
38
00:01:31,220 –> 00:01:34,310
بفهمیم رمز عبور کاربران ما در حال حاضر یکی از راه
39
00:01:34,310 –> 00:01:36,049
هایی است که می توانیم یک لایه اضافه کنیم.
40
00:01:36,049 –> 00:01:38,030
حفاظت در برابر این حملات این است
41
00:01:38,030 –> 00:01:40,280
که یک رشته تصادفی معرفی کنیم در حالی که هش کردن
42
00:01:40,280 –> 00:01:42,830
این رشته تصادفی به عنوان salt نامیده می شود
43
00:01:42,830 –> 00:01:45,409
که salt را می توان به رمز عبور اضافه کرد
44
00:01:45,409 –> 00:01:48,170
یا می توان آن را مستقیماً به تابع هش ارسال کرد
45
00:01:48,170 –> 00:01:50,630
زیرا ما
46
00:01:50,630 –> 00:01:53,060
برای هر کدام یک رشته تصادفی اضافه می کنیم. رمز عبور جدید
47
00:01:53,060 –> 00:01:55,280
که هش شده است، بنابراین نتیجه نهایی این است که
48
00:01:55,280 –> 00:01:57,400
حتی اگر دو رمز عبور یکسان وجود داشته
49
00:01:57,400 –> 00:02:00,470
باشد، هش خروجی متفاوت خواهد بود،
50
00:02:00,470 –> 00:02:02,720
بنابراین این بدان معناست که حمله فرهنگ لغت
51
00:02:02,720 –> 00:02:04,760
دیگر از بین نمی رود. بسیار
52
00:02:04,760 –> 00:02:07,040
موثر است زیرا مهاجم در حال حاضر
53
00:02:07,040 –> 00:02:09,740
باید Salt های مختلف را برای
54
00:02:09,740 –> 00:02:12,020
هر رمز عبوری که می خواهد امتحان کند،
55
00:02:12,020 –> 00:02:14,120
مزیت دیگر این رویکرد این است که
56
00:02:14,120 –> 00:02:17,000
به دلیل استفاده از نمک تصادفی برای هر
57
00:02:17,000 –> 00:02:19,370
رمز عبور جدید، اندازه جدول هش رنگین کمان است.
58
00:02:19,370 –> 00:02:20,959
59
00:02:20,959 –> 00:02:23,930
برای انجام یک
60
00:02:23,930 –> 00:02:26,480
حمله موفقیت آمیز
61
00:02:26,480 –> 00:02:28,550
باید بزرگتر باشد. این امر حملات میز رنگین کمان را بسیار دشوارتر می کند،
62
00:02:28,550 –> 00:02:31,520
اما حتی زمانی که از نمک استفاده می کنیم،
63
00:02:31,520 –> 00:02:33,860
همچنان در برابر حملات brute-force آسیب پذیر هستیم،
64
00:02:33,860 –> 00:02:36,200
جایی که کسی می تواند هر ترکیب کلیدی را امتحان کند
65
00:02:36,200 –> 00:02:38,390
تا زمانی که به آن ضربه بزند.
66
00:02:38,390 –> 00:02:41,150
درست است، بنابراین برای افزودن یک لایه
67
00:02:41,150 –> 00:02:43,489
امنیتی دیگر، میتوانیم تعریف کنیم که
68
00:02:43,489 –> 00:02:45,950
تابع هش چند بار اجرا میشود یا
69
00:02:45,950 –> 00:02:47,360
به عبارت دیگر
70
00:02:47,360 –> 00:02:50,239
چند بار تکرار خواهد
71
00:02:50,239 –> 00:02:52,400
72
00:02:52,400 –> 00:02:54,890
داشت.
73
00:02:54,890 –> 00:02:56,989
آیا می خواهیم عمدا
74
00:02:56,989 –> 00:02:59,599
سرعت عملکرد خود را به خوبی کاهش دهیم، عملکرد کندتر
75
00:02:59,599 –> 00:03:01,970
در برابر حملات brute-force مصونیت
76
00:03:01,970 –> 00:03:04,370
بیشتری دارد زیرا
77
00:03:04,370 –> 00:03:07,069
آزمایش هر p زمان بیشتری می برد. ترکیب کلید ممکن است،
78
00:03:07,069 –> 00:03:08,420
بنابراین
79
00:03:08,420 –> 00:03:10,670
حملات brute-force را بسیار کندتر می کند و در
80
00:03:10,670 –> 00:03:13,250
نتیجه
81
00:03:13,250 –> 00:03:15,410
انجام موفقیت آمیز آن بسیار دشوارتر می شود، بنابراین وقتی صحبت از هش کردن رمز عبور کندتر به میان می آید، به
82
00:03:15,410 –> 00:03:17,690
طور عجیبی
83
00:03:17,690 –> 00:03:19,620
84
00:03:19,620 –> 00:03:21,690
در رمزنگاری به اندازه کافی بهتر است، یک تابع مشتق کلید
85
00:03:21,690 –> 00:03:24,510
اساسا ورودی
86
00:03:24,510 –> 00:03:26,910
مانند رمز عبور را دریافت می کند و از آن استفاده می کند. یک تابع شبه تصادفی
87
00:03:26,910 –> 00:03:30,090
برای تولید خروجی اکنون
88
00:03:30,090 –> 00:03:32,580
الگوریتمهای هش زیادی وجود دارد که میتوان از
89
00:03:32,580 –> 00:03:35,069
آنها استفاده کرد. من فقط سه مورد
90
00:03:35,069 –> 00:03:37,019
از محبوبتر را فهرست کردم، بدیهی است که اینها
91
00:03:37,019 –> 00:03:39,180
تنها نیستند، اما
92
00:03:39,180 –> 00:03:41,069
میتوانند آنهایی باشند که بیشتر با آنها روبرو میشوید. اغلب
93
00:03:41,069 –> 00:03:43,430
از سایرین برای پروژه خود از pbkdf2 استفاده
94
00:03:43,430 –> 00:03:47,670
میکنیم، این مخفف تابع مشتق کلید مبتنی بر رمز عبور
95
00:03:47,670 –> 00:03:50,790
نسخه 2 است، اگر
96
00:03:50,790 –> 00:03:52,410
میخواهید ویدیوهایی از سایر توابع هش را ببینید،
97
00:03:52,410 –> 00:03:54,180
در نظرات زیر به من اطلاع دهید
98
00:03:54,180 –> 00:03:55,680
و ما میتوانیم برای هر کدام یک ویدیوی جداگانه انجام دهیم.
99
00:03:55,680 –> 00:03:58,769
درست است پس بیایید
100
00:03:58,769 –> 00:04:01,049
به ترمینال برویم ما در پوشه ای
101
00:04:01,049 –> 00:04:03,420
هستیم که آخرین بار برای ایجاد
102
00:04:03,420 –> 00:04:05,430
برنامه چت ایجاد کردیم و
103
00:04:05,430 –> 00:04:07,530
محیط مجازی را فعال
104
00:04:07,530 –> 00:04:10,440
کردیم. ماژولهای اجارهای برای pbkdf2 ما از ماژولهایی
105
00:04:10,440 –> 00:04:12,180
استفاده میکنیم که
106
00:04:12,180 –> 00:04:15,599
با گذشته lib ارائه میشود، بنابراین آنچه گذشته lib است،
107
00:04:15,599 –> 00:04:17,760
یک کتابخانه هش کردن رمز عبور برای پایتون است
108
00:04:17,760 –> 00:04:20,250
و با 30 نوع
109
00:04:20,250 –> 00:04:21,988
الگوریتم هش ارائه میشود که میتوانیم
110
00:04:21,988 –> 00:04:25,229
از بین آنها حتی bcrypt و argon را انتخاب کنیم. همچنین میتوان
111
00:04:25,229 –> 00:04:28,530
از کتابخانه Lib گذشته وارد کرد قبل از اینکه
112
00:04:28,530 –> 00:04:30,930
بتوانیم از pass Lib استفاده کنیم، باید
113
00:04:30,930 –> 00:04:32,729
آن را نصب کنیم و همانطور که با
114
00:04:32,729 –> 00:04:35,729
ماژولهای قبلی انجام دادیم، از pip استفاده میکنیم.
115
00:04:35,729 –> 00:04:40,370
نحو این است که pip install past Lib
116
00:04:40,370 –> 00:04:42,470
pass lib با موفقیت نصب شده است،
117
00:04:42,470 –> 00:04:45,500
حالا اجازه دهید به یک برنامهریزی کنید و ببینید که چگونه
118
00:04:45,500 –> 00:04:48,060
از این کتابخانه استفاده میکنیم،
119
00:04:48,060 –> 00:04:50,760
این همان برنامه نقطه به فایل
120
00:04:50,760 –> 00:04:52,260
است که در چند ویدیوی اخیر روی آن کار کردهایم،
121
00:04:52,260 –> 00:04:54,360
نگران نباشید اگر
122
00:04:54,360 –> 00:04:56,220
این ویدیو را بهصورت مجزا تماشا میکنید،
123
00:04:56,220 –> 00:04:58,800
روند استفاده از تابع هش کردن
124
00:04:58,800 –> 00:05:00,360
به هیچ وجه انجام نمیشود.
125
00:05:00,360 –> 00:05:02,940
برای شروع پروژه شما به طور چشمگیری متفاوت است،
126
00:05:02,940 –> 00:05:06,270
اجازه دهید ماژول pbkdf2 را از کتابخانه Lib گذشته وارد
127
00:05:06,270 –> 00:05:08,850
کنیم، وقتی این کار را انجام دادیم، باید
128
00:05:08,850 –> 00:05:11,880
مشخص کنیم که V از کدام هش رمزنگاری
129
00:05:11,880 –> 00:05:15,300
استفاده می کند، ما از sha-256 استفاده خواهیم کرد.
130
00:05:15,300 –> 00:05:17,850
همچنین از sha-512 استفاده میکرد و
131
00:05:17,850 –> 00:05:19,650
سینتکس برای هر دوی آنها یکسان بود،
132
00:05:19,650 –> 00:05:21,930
حالا بیایید
133
00:05:21,930 –> 00:05:23,850
به قسمتی که از
134
00:05:23,850 –> 00:05:26,280
این تابع استفاده
135
00:05:26,280 –> 00:05:28,230
136
00:05:28,230 –> 00:05:30,690
میکنیم اسکرول کنیم.
137
00:05:30,690 –> 00:05:33,510
متن ساده و سینتکس برای گرفتن
138
00:05:33,510 –> 00:05:36,540
مقدار از فرم flask syntax WTF است
139
00:05:36,540 –> 00:05:39,300
، مشخصات سینتکس
140
00:05:39,300 –> 00:05:41,490
برای این ویدیو مهم نیست، اگر
141
00:05:41,490 –> 00:05:43,110
علاقه مند هستید، می توانید
142
00:05:43,110 –> 00:05:44,669
برای تماشای ویدیو روی لینک بالا کلیک کنید، جایی که من توضیح می دهم
143
00:05:44,669 –> 00:05:48,120
برای ایجاد هش. از این
144
00:05:48,120 –> 00:05:51,440
رمز عبور متن ساده، نحو عبارت است از
145
00:05:51,440 –> 00:05:55,620
pbkdf2 زیر خلاصه استفاده شده از char 256
146
00:05:55,620 –> 00:05:57,840
هش نقطه و سپس رمز عبور متن ساده را تایپ کنید
147
00:05:57,840 –> 00:06:00,600
که رمز عبور است، بنابراین این
148
00:06:00,600 –> 00:06:03,500
مقدار رمز عبور همان چیزی است که در
149
00:06:03,500 –> 00:06:05,510
اینجا یک سوال است به یاد داشته باشید زمانی که ما
150
00:06:05,510 –> 00:06:07,670
در مورد توابع مشتق کلید صحبت می
151
00:06:07,670 –> 00:06:10,100
کردیم. گفت که میتوانیم هم نمک
152
00:06:10,100 –> 00:06:12,830
و هم تعداد تکرارهایی را که
153
00:06:12,830 –> 00:06:14,510
به نظر نمیرسد در نحو انجام دادهایم، مشخص کنیم،
154
00:06:14,510 –> 00:06:17,540
بنابراین این ماژول بهطور خودکار چه اتفاقی
155
00:06:17,540 –> 00:06:20,300
میافتد. اگر
156
00:06:20,300 –> 00:06:23,300
هم نمک و هم تعداد تکرارها به صورت
157
00:06:23,300 –> 00:06:26,510
پیشفرض، بهطور خودکار یک نمک 16 بایتی اضافه میکند،
158
00:06:26,510 –> 00:06:29,210
لازم نیست این را مشخص
159
00:06:29,210 –> 00:06:33,020
کنیم و همچنین
160
00:06:33,020 –> 00:06:35,870
به هر دلیلی
161
00:06:35,870 –> 00:06:38,210
که بخواهیم یکی از
162
00:06:38,210 –> 00:06:41,740
آنها را تغییر دهیم، بهطور پیشفرض 29000 تکرار اضافه میکند. سینتکس با استفاده از
163
00:06:41,740 –> 00:06:44,840
تکرارهای مشخص، مثلاً 1000
164
00:06:44,840 –> 00:06:47,750
و طول نمک و بایت،
165
00:06:47,750 –> 00:06:51,680
مثلاً 8
166
00:06:51,680 –> 00:06:54,080
167
00:06:54,080 –> 00:06:55,970
بایت خواهد بود.
168
00:06:55,970 –> 00:06:57,890
صفحه مستندات Lib گذشته
169
00:06:57,890 –> 00:07:00,020
در صورتی که می خواهید
170
00:07:00,020 –> 00:07:03,140
این مورد را بیشتر کاوش کنید، بنابراین اجازه دهید
171
00:07:03,140 –> 00:07:05,180
خروجی این تابع را در متغیری
172
00:07:05,180 –> 00:07:08,240
به نام رمز عبور