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