با استفاده از تابع DES_ENCRYPT در MySQL، یک ستون VARBINARY برای ذخیرهٔ گذرواژه‌های رمزنگاری‌شده در جدول users اضافه کنید و یک کوئری INSERT نمونه بنویسید که گذرواژه را با یک کلید مشخص رمز کند.

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

0.0

ابتدا ستون جدیدی از نوع VARBINARY یا BLOB به جدول اضافه کنید (مثلاً ALTER TABLE users ADD COLUMN password_enc VARBINARY(255)) سپس در INSERT از تابع DES_ENCRYPT('plain_password', 'your_key') استفاده کنید: INSERT INTO users (username, password_enc) VALUES ('ali', DES_ENCRYPT('mypassword','mykey')); برای بازیابی متن اصلی از DES_DECRYPT استفاده کنید و خروجی باینری را با CONVERT/CAST یا TO_BASE64/HEX نمایش دهید. نکات امنیتی: DES ضعیف است — برای نگهداری گذرواژه‌ها از هش‌های یک‌طرفه (bcrypt/argon2) استفاده کنید و کلید رمزنگاری را خارج از کد و دیتابیس مدیریت کنید؛ از قرار دادن کلید به‌صورت صریح در کوئری‌ها پرهیز کنید و از prepared statements و دسترسی‌های محدود بهره ببرید.

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

استفاده از DES_ENCRYPT برای گذرواژه‌ها در MySQL به‌دلیل ضعف امنیتی مناسب نیست. برای نگهداری امن گذرواژه‌ها بهتر است از هش‌های یک‌طرفه مانند bcrypt یا Argon2 استفاده کنید و کلید رمزنگاری را خارج از کد و دیتابیس مدیریت کنید. اگر به‌هر دلیل ناچار به رمزنگاری هستید، کلید را در کوئری یا کد قرار ندهید و از مدیریت کلید یا خدمات HSM/KMS استفاده کنید و از prepared statements بهره ببرید. به‌جای بازیابی متن رمزگشوده با DES_DECRYPT، فقط داده‌ها را نگه دارید و از هش‌های معتبر برای احراز هویت استفاده کنید.

گزارش

1 پاسخ

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

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