یک جدول users در MySQL بسازید که ستون username و password_hash داشته باشد؛ چند رکورد با رمزهای هش شده با تابع SHA1 وارد کنید و یک پرس‌وجوی SELECT بنویسید که با دریافت نام کاربری و رمز ورودی (به صورت متن ساده) بررسی کند آیا رمز صحیح است یا خیر.

2.0 بازدید آخرین ویرایش در 220 روز قبل ساعت 02:11

0.0

برای حل این مسئله ابتدا از CREATE TABLE برای ایجاد جدول users با ستون‌های username و password_hash استفاده کنید، سپس با INSERT چند کاربر اضافه کنید و مقدار ستون password_hash را با استفاده از تابع SHA1('plain_password') قرار دهید. برای بررسی ورود از پرس‌وجوی SELECT مانند: SELECT * FROM users WHERE username = 'user' AND password_hash = SHA1('input_password'); استفاده کنید — در عمل از پارامترهای آماده (prepared statements) به‌جای قرار دادن مستقیم مقادیر استفاده کنید. توجه: SHA1 در MySQL با تابع SHA1(str) محاسبه می‌شود ولی برای رمزنگاری رمزهای عبور در سیستم‌های واقعی امن نیست؛ بهتر است از SHA2، bcrypt و افزودن salt و مدیریت مناسب دسترسی‌ها و permissions استفاده کنید.

توسط پژوهشگر در 220 روز قبل ساعت 02:11
دسته بندی ها: MySQL MySQL for beginner
arash در 220 روز قبل ساعت 10:41

این طراحی با استفاده از SHA1 برای هش رمز عبور امنی در سطح تولید نیست و بهتر است از راه‌حل‌های مدرن‌تر استفاده کرد. به‌جای SHA1، از bcrypt یا Argon2 با salt و مدیریت پسورد در لایه اپلیکیشن یا سرویس مناسب استفاده کنید. اگر هنوز می‌خواهید این کار را در MySQL انجام دهید، می‌توانید از SHA2(..., 256) به‌همراه salt استفاده کنید و حتماً از prepared statements برای جلوگیری از تزریق SQL استفاده کنید. همچنین توصیه می‌شود ستون username را UNIQUE کنید تا از وجود کاربر با نام کاربری تکراری جلوگیری شود.

گزارش

1 پاسخ

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

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