با استفاده از تابع ENCRYPT در MySQL یک جدول users ایجاد کنید تا رمزعبورها هنگام INSERT به‌صورت رمزنگاری‌شده ذخیره شوند و سپس کوئری‌ای بنویسید که صحت رمز واردشده برای یک نام‌کاربری مشخص را بررسی کند.

7.0 بازدید آخرین ویرایش در 199 روز قبل ساعت 23:54

0.0

می‌توانید جدولی با فیلدهای id، username و password بسازید و هنگام درج مقدار password را با ENCRYPT('plain', 'salt') یا ENCRYPT('plain') ذخیره کنید. برای بررسی، از مقایسه‌ی مقدار ذخیره‌شده با ENCRYPT(مقدار_واردشده, password) استفاده کنید تا از همان salt استفاده شود (مثال: SELECT * FROM users WHERE username='ali' AND password=ENCRYPT('try', password);). توجه کنید تابع ENCRYPT بسته به سیستم‌عامل و کتابخانه‌های نصب‌شده ممکن است در همه محیط‌ها در دسترس نباشد؛ برای پروژه‌های واقعی معمولاً از توابع رمزنگاری مدرن‌تری مثل SHA2 یا AES_ENCRYPT استفاده می‌شود.

توسط پژوهشگر در 199 روز قبل ساعت 23:54
دسته بندی ها: MySQL MySQL for beginner
reyhaneh در 199 روز قبل ساعت 23:54

تابع ENCRYPT در برخی توزیع‌ها وابسته به libc و ممکن است در همه محیط‌ها در دسترس یا امن نباشد، بنابراین برای پروژه‌های واقعی توصیه می‌شود از الگوریتم‌های مدرنِ مخصوص ذخیره‌سازی رمز مثل bcrypt یا Argon2 استفاده کنید. اگر ناچار به استفاده از ENCRYPT هستید حتماً از salt یکتا برای هر کاربر بهره ببرید و salt یا مقدار تولیدشده را همراه هش ذخیره کنید تا بتوانید در اعتبارسنجی از ENCRYPT(ورودی, password) استفاده کنید. همچنین هنگام درج و جستجو از prepared statements استفاده کنید تا ریسک تزریق SQL کاهش یابد و در نظر داشته باشید که توابع هش سریع مانند SHA2 برای ذخیره‌سازی پسورد کمتر مناسب‌اند چون مقاومتی در برابر حملات brute-force ندارند.

گزارش

1 پاسخ

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

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