یک پرس‌وجو بنویسید که در جدول users پسورد وارد شده را با استفاده از تابع SHA2 نسخه 256 و همراه با salt ذخیره کند و سپس با یک پرس‌وجوی دیگر بررسی کند که آیا ایمیل و پسورد وارد شده مطابقت دارند یا خیر.

9.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 03:09

0.0

برای حل این مسئله از تابع SHA2(str, 256) در MySQL استفاده کنید و برای افزایش امنیت قبل از هش کردن مقدار salt را به پسورد اضافه کنید (مثلاً SHA2(CONCAT(salt, plain_password), 256)). در جدول users یک ستون salt و یک ستون password (مثلاً CHAR(64) برای خروجی SHA-256) داشته باشید. نکات: هنگام بررسی ورود، مقدار وارد شده را با CONCAT(salt, واردشده) هش کنید و با مقدار ذخیره‌شده مقایسه کنید؛ برای تولید salt از مقدار تصادفی استفاده کنید و در عمل برای رمزنگاری پسوردها از الگوریتم‌های مخصوص رمزنگاری مانند bcrypt یا Argon2 استفاده کنید چون SHA2 برای ذخیره طولانی‌مدت پسوردها ایده‌آل نیست.

توسط پژوهشگر در 220 روز قبل ساعت 03:09
دسته بندی ها: MySQL MySQL for beginner
reyhaneh در 220 روز قبل ساعت 07:21

استفاده از SHA-256 خالص برای پسوردها امن نیست و بهتر است از bcrypt یا Argon2 استفاده کنید تا مقاومت به حملات دیکشنری و brute-force افزایش یابد. اگر همچنان از SHA-256 استفاده می‌کنید، salt را به‌طور تصادفی طولانی تولید کنید و پسورد را با SHA2(CONCAT(salt, password), 256) هش کنید و salt را در ستون جداگانه ذخیره کنید. هنگام ورود، مقدار وارد‌شده را با CONCAT(salt, ورودی) هش کنید و نتیجه را با مقدار ذخیره‌شده مقایسه نمایید، و برای امن‌سازی بیشتر از prepared statements استفاده کنید تا از SQL injection جلوگیری شود.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری