PDA

View Full Version : سوال: کد کردن دیتابیس



mamali-mohammad
جمعه 10 خرداد 1392, 12:05 عصر
سلام
میخوام دیتابیس رو کد کنم که کسی به اطلاعات دسترسی پیدا نکنه
چطوری میشه این کارو کرد ؟
از hash و ... نمی خوام استفاده بشه

arta.nasiri
جمعه 10 خرداد 1392, 12:34 عصر
سلام

کد کردن کلیه اطلاعاتی که تو دیتابیس داری کاره اشتباهیه!! چون هر بار باید الگوریتم های code و decode رو اجرا کنی که باعث میشه به سرور فشار بیاد از یه طرف هم باعث کندی سایتت میشه.
بهتره فقط اطلاعات حیاتی مثل اطلاعات کاربران و مدیران رو encrypt کنی.

در ضمن سعی کن از روشهای من در آوردی استفاده نکنی.

من بهت الگوریتم SHA1 رو پیشنهاد میکنم

morudi
جمعه 10 خرداد 1392, 12:38 عصر
اگه از خطر تزریق جلو گیری بکنی کسی از بیرون سرور نمی تونه به سرور وصل شه چون در بخش دیتابیس سی پنل یک بخش برای ست کردن ای پی وصل شدن به دیتابیس هست
و می تونید از الگوریتم های مانند SHA1 که دوستمون معرفی کردن من هم md5 رو پیشنهاد می کنم

hessam2003
جمعه 10 خرداد 1392, 12:39 عصر
سلام.
دوست عزیز میشه الگریتم را به صورت پیاده شده توضیح بدید؟

mamali-mohammad
جمعه 10 خرداد 1392, 13:02 عصر
از کل دیتابیس فقط یه ردیف کد میشه
میخوام از طریق خود دیتابیس کد بشه
یعنی اطلاعات باید کد شده در دیتابیس باشه و غیر کد شده به کاربر نمایش بده
چطوری میشه انجام داد ؟

arta.nasiri
جمعه 10 خرداد 1392, 13:53 عصر
اگه میخوای از توابع خود MySql واسه Encrypt کردن استفاده کنی یه سر به اینجا (https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html) بزن

mamali-mohammad
جمعه 10 خرداد 1392, 14:05 عصر
اگه میخوای از توابع خود MySql واسه Encrypt کردن استفاده کنی یه سر به اینجا (https://dev.mysql.com/doc/refman/5.5/en/encryption-functions.html) بزن

چطوری باید ازش استفاده کرد ؟

arta.nasiri
جمعه 10 خرداد 1392, 14:17 عصر
هنگام insert کردن دیتا توی دیتابیس میتونی از این روش استفاده کنی
INSERT INTO tblTest(val1, val2) VALUES(SHA1('abcdef'), ENCRYPT('hello'));

تو مثال بالا از تابع SHA1 و ENCRYPT برای کد کردن اطلاعات استفاده کردم که به ترتیب مقدار هرکدوم رو تو فیلدهای val1 و val2 قرار میده.

mamali-mohammad
جمعه 10 خرداد 1392, 19:31 عصر
اینو میدونم
چطوری واکشی رو انجام بدم که از حالت کد خارج بشه ؟

arta.nasiri
جمعه 10 خرداد 1392, 20:58 عصر
الگوریتم های HASH مثل SHA1 رو نمیشه بازیابی کرد. (اگر هم بشه خیلی زمان میبره.)
پس از این روش میتونی واسه ذخیره پسورد کاربران استفاده کنی، وقتی هم کاربر پسورد رو وارد کرد HASH میکنی و با اون مقداری که تو دیتابیس داری مقایسه میکنی.

ولی اگه میخوای اطلاعاتت بعد از کدگذاری قابل بازگشت باشه میتونی ENCODE یا ENCRYPT کنی

واسه کدگذاری:
INSERT INTO tbl1(val1) VALUES (DES_ENCRYPT("Hello"));

واسه کدگشایی:
SELECT DES_DECRYPT(val1) FROM tbl1;

mamali-mohammad
جمعه 10 خرداد 1392, 21:42 عصر
خب مشکل همینه که باید باز گشایی بشه
یه بار یه دیتابیس رو دیدم اطلاعاتش طوری کد شده بود چیزی توش معلوم نبود
کل دیتابیس هم دانلود کردم اطلاعاتی توش نبود !

arta.nasiri
شنبه 11 خرداد 1392, 00:12 صبح
خب مشکل همینه که باید باز گشایی بشه
یه بار یه دیتابیس رو دیدم اطلاعاتش طوری کد شده بود چیزی توش معلوم نبود
کل دیتابیس هم دانلود کردم اطلاعاتی توش نبود !

با همون 2 خط کدی که گذاشتم میتونی اطلاعات رو کد شده وارد دیتابیس کنی. موقع خوندن هم میتونی کدگشایی کنی.

اگه کارت با این 2 خط راه نیافتاد از بخش mysql راهنمایی بگیر.

mamali-mohammad
شنبه 11 خرداد 1392, 10:35 صبح
با همون 2 خط کدی که گذاشتم میتونی اطلاعات رو کد شده وارد دیتابیس کنی. موقع خوندن هم میتونی کدگشایی کنی.

اگه کارت با این 2 خط راه نیافتاد از بخش mysql راهنمایی بگیر.

خب اینطوری کسی به دیتابیس دسترسی پیدا کنه به راحتی هم میتونه دیکد کنه

arta.nasiri
شنبه 11 خرداد 1392, 13:50 عصر
خب اینطوری کسی به دیتابیس دسترسی پیدا کنه به راحتی هم میتونه دیکد کنه

از AES_ENCRYPT استفاده کن، در اینصورت کسی که به دیتابیس دسترسی داره تا زمانی که key نداشته باشه نمیتونه اطلاعات رو Decrypt کنه.

نحوه استفاده از اون به این شکل:
AES_ENCRYPT('data', 'key')
key: یک کلید خصوصی هست که برای کدگذاری و کدگشایی داده ها به کار میره.

mamali-mohammad
شنبه 11 خرداد 1392, 14:38 عصر
ممنون
این درسته :

INSERT INTO tbl1 VALUES (AES_ENCRYPT('Hello','key'));

SELECT DES_DECRYPT('Hello','key') FROM tbl1;

javady_joon
سه شنبه 11 شهریور 1393, 17:52 عصر
یه سوال دارم
این هش کردن راندومه؟ یا نه همیشه از یک روش استفاده میشه و لو میره و قابل هک هست؟
اگر قابل هک هست راهی وجود داره؟
ممنون