PDA

View Full Version : سوال: به رمز کردن اطلاعات قبل از ذخیره سازی



mokhtasatxyz
سه شنبه 02 اردیبهشت 1393, 09:08 صبح
سلام
من قصد دارم اطلاعاتی را که از فرمهایم به سرور و php می اید قبل از ثبت شدن در دیتابیس و توسط توابع اینکودر کننده و رمز کننده به رمز کنم .
سوال
1- نظر شما چیست خب است یا بد ؟
2- نیاز است یا خیر؟
3- از چه تابعی برای اینکود و دیکودر استفاده کنم ؟
4- برای کدام داده ها از اینکودر استفاده کنم و برای کدام از کد های hash کننده و رمز کننده دیگر؟
5- در نوع و طول داده هایم چه تغییراتی بدهم؟
ممنون

omidabedi
سه شنبه 02 اردیبهشت 1393, 10:26 صبح
میخواید کد کنید به چه منظوری ؟!!!!
خودتون هنوز دلیل کار خودتون رو نمیدونید که بشه گفت از چه تابع هش و اینکدری استفاده کنید
!

mokhtasatxyz
سه شنبه 02 اردیبهشت 1393, 11:39 صبح
میخواید کد کنید به چه منظوری ؟!!!!
خودتون هنوز دلیل کار خودتون رو نمیدونید که بشه گفت از چه تابع هش و اینکدری استفاده کنید
!

در سایت من قرار است اطلاعات شخصی افراد ذخیره شود پس به فکرم رسید که برای افزایش امنیت اگر به هر دلیلی سایتم هک شد و هکر به اطلاعات دیتابیس دستری پیدا کرد تمامی اطلاعات نام کاربری کلمه عبور و اطلاعات شخصی افراد نا مفهوم و به رمز باشه و هر وقت که کاربری به طور صحیح وارد پروفایل خودش شد اطلاعات لازم دیکود شده و بدون رمز برایش نمایش داده شود.:متفکر:
حالا سوال من اینه
1- نظر شما چیست ، این کار خوب است یا بد ؟
2- نیاز ی است یا خیر؟
3- از چه تابعی برای اینکود و دیکودر استفاده کنم ؟
4- برای کدام داده ها از اینکودر استفاده کنم و برای کدام از کد های hash کننده و رمز کننده دیگر؟
5- در نوع و طول داده هایم چه تغییراتی بدهم؟
ممنون

omidabedi
سه شنبه 02 اردیبهشت 1393, 12:14 عصر
اگر قرارباشه هکر نتونه اطلاعات رو بخونه باید از هش استفاده کنید که اون موقع خود سیستم و شما هم نمیتونید اطلاعات رو بخونید!!
پس کار اشتباهی است
از طرفی اگر اینکد کنید با توابع معمول براحتی توسط دیکدرها باز میشه
بنظر من کار اشتباهی هست و برنامه رو الکی پیچیده میکنی و حتی خراب
روی بقیه ی قسمت های امنیت کار کنید که باگ sqlinjection و .... نداشته باشه بعلاوه هش کردن پسورد ها برای محکم کاری و حتی میتونید صفحه لاگین ادمین رو پابلیک نکنید و بهش لینک ندید و از نام نامتعارف استفاده کنید حتی اگر اطلاعات رو هم کشیدن بیرون بدون فرم لاگین کاربردی نداره

تابع crypt خوبه 2تا پارامتر میگیره پارامتر اول پسوردیه که میخوای هش بشه و دومین پارامتر salt هست

توجه داشته باش که هردو پارامتر رو داشته باشه در غیر این صورت اگر salt نذاری خودش generate میکنه در این صورت پسورد یکسانی رو دریافت نمیکنی

mokhtasatxyz
سه شنبه 02 اردیبهشت 1393, 12:39 عصر
صفحه لاگین ادمین رو پابلیک نکنید و بهش لینک ندید و از نام نامتعارف استفاده کنید

با صفحه لاگین دیگر یوزر ها چکار کنم ، به هر حال یک فرم ورود در صفحه اصلی سایت قرار می گیرد تا دیگر یوزرها وارد پرو فایل خود شوند
یعنی هکر از طریق فرم ورود دیگر یوزر ها نمی تواند به دیتابیس دسترسی کامل داشته باشد.

ضمنا من اینطوری برنامه ام را نوشته ام که ما فقط یک فرم ورود برای تمامی یوزرها داریم چه ادمین و چه غیر ادمین و اگر یوزر ادمین وارد شد به پروفایل خود و اگر غیر ادمین به صفحه index ارجاء داده می شود. فقط جدول حاوی نام کاربری و کلمه عبور ادمین از دیگر یوزر ها جداست.


حتی اگر اطلاعات رو هم کشیدن بیرون بدون فرم لاگین کاربردی نداره

یعنی چه که بدون فرم لاگین کاربردی ندارد یک هکر وقتی به اطلاعات درون دیتابیس دسترسی پیدا کرد به فرم لاگین چه احتیاجی دارد مگر نه اینکه هکر ها سعی دارن بدون استفاده از فرم لاگین به اطلاعات دیتابیس دسرسی داشته باشند


برای تابع هش crypt() مناسب هست که میتونی بعنوان پارامتر دوم salt برای امنیت بیشتر اضافه کنی که یک هش یک طرفه هست

به خاطر تابعی هم که گفتی ممنون فقط یک سوال
یک طرفه بودن یعنی فیر قابل دیکود شدن؟
متشکر:تشویق:

omidabedi
سه شنبه 02 اردیبهشت 1393, 12:51 عصر
با صفحه لاگین دیگر یوزر ها چکار کنم ، به هر حال یک فرم ورود در صفحه اصلی سایت قرار می گیرد تا دیگر یوزرها وارد پرو فایل خود شوند
یعنی هکر از طریق فرم ورود دیگر یوزر ها نمی تواند به دیتابیس دسترسی کامل داشته باشد.

ضمنا من اینطوری برنامه ام را نوشته ام که ما فقط یک فرم ورود برای تمامی یوزرها داریم چه ادمین و چه غیر ادمین و اگر یوزر ادمین وارد شد به پروفایل خود و اگر غیر ادمین به صفحه index ارجاء داده می شود. فقط جدول حاوی نام کاربری و کلمه عبور ادمین از دیگر یوزر ها جداست.



یعنی چه که بدون فرم لاگین کاربردی ندارد یک هکر وقتی به اطلاعات درون دیتابیس دسترسی پیدا کرد به فرم لاگین چه احتیاجی دارد مگر نه اینکه هکر ها سعی دارن بدون استفاده از فرم لاگین به اطلاعات دیتابیس دسرسی داشته باشند


به خاطر تابعی هم که گفتی ممنون فقط یک سوال
یک طرفه بودن یعنی فیر قابل دیکود شدن؟
متشکر:تشویق:

فرم لاگین جداگانه میتونی بزاری
به هرحال کارایی که یک هکر میتونه با پروفایل ادمین انجام بده با یک یوزر ساده نمیتونه انجام بده!

فقط راه حل بود.

بستگی به هدف هکر داره یکی اطلاعات بقیه ی کاربرا رو میخواد راحت میکشه بیرون اما یکی میخواد دسترسی های بالاتری رو بگیره از سیستم که نیاز داره بعنوان ادمین لاگین کنه مثلا شل اپلود کنه.

برای اطلاعات دیگه هم درصورتی که از توابع اینکدینگ برای برگشت پذیربودن استفاده کنید خب همه میتونن برش گردونن اگرم از هش استفاده کنی خودتم نمیتونه استفاده کنی ازش پس بنظر من میتونی اطلاعات رو با یک الگوریتم شخصی اینکد کنی اینجوری کار هکر هم سختتره بخواد اطلاعات رو دیکد کنه

یکطرفه بودن یعنی دیگه نمیتونی برش گردونی فقط میتونی مقایسه کنی

mokhtasatxyz
سه شنبه 02 اردیبهشت 1393, 13:26 عصر
بسیار ممنون کاملا فهمیدم
ببخشید قفط یک سوال دیگر
اینکود کننده ها و hash ها طول داده نتیجه و نوع مقادیر ان را افزایش می دهند مثلا یک عدد 5 رقمی را از ورودی می گیرند و رشته ای حاوی عدد و دیگر کاراکتر های غیر عددی تحویل میدهند.
پس من باید طول و نوع داده های طراحی شده در دیتابیس را تغییر دهم ؟
اگر باید تغییر دهم نوع و اندازه ان را باید چه بگزارم؟
ممنون
پایان

omidabedi
سه شنبه 02 اردیبهشت 1393, 14:02 عصر
بسیار ممنون کاملا فهمیدم
ببخشید قفط یک سوال دیگر
اینکود کننده ها و hash ها طول داده نتیجه و نوع مقادیر ان را افزایش می دهند مثلا یک عدد 5 رقمی را از ورودی می گیرند و رشته ای حاوی عدد و دیگر کاراکتر های غیر عددی تحویل میدهند.
پس من باید طول و نوع داده های طراحی شده در دیتابیس را تغییر دهم ؟
اگر باید تغییر دهم نوع و اندازه ان را باید چه بگزارم؟
ممنون
پایان

هرکدوم از هش ها رفتار متفاوتی نشون میدن مثلا md5 هرچقد رشته بدی میشه 32 کارکتر

ام اینکدر ها مثلا base_64 حدود 20 درصد حجم داده رو اضاف میکنه

شما تو دیتابیس برای کلمه عبور و اطلاعات کوتاه varchar 255 کارکتر بزار برای داده های متنی طولانی مثل متن صفحات از text فکر کنم باید استفاده کنید

joker
سه شنبه 02 اردیبهشت 1393, 17:18 عصر
همونطور که دوستمون گفتند اگه هک شدی چه یک فیلد چه همه سورس کدت در دسترس قرار میگیره.
اونوقت هم وقتت را گزاشتی برای رمزنگاری هم در نهایت هکر تمام توابعت را در دسترس داره و میتونه اطلاعاتت را دیکد کنه
در مورد سیستمهای وب بیس تمام وقتت را بزار برای امن کردن ورودی ها و کانفیگ سرور