ali
4 سال پیش توسط ali مطرح شد
10 پاسخ

هش کردن id المان ها سمت کاربر

سلام
کسی میدونه چطور میتونم برای المان هایی که از سمت دیتابیس خونده میشه (مثل محصولات،مطالب،کاربران و ...) id یا شناسه ی هش شده چاپ کنم (تو قسمت فرانت سایت)
برای مثال من لیست کاربرانی دارم که هر کدوم از اون ها فانکشن های خاص خودشون رو دارن
سیستم طوری طراحی شده که با کلیک کردن روی دکمه ی ویرایش هر کاربر id اون کاربر و چیزای دیگه فرستاده میشه سمت سرور و تغییرات ذخیره میشه در نهایت (یه مثاله؛ فکر کنین دکمه ی حذف گذاشتم که یه ریکوئست get فرستاده که id کاربر هم داخلشه)

سوال نهایی :) اینه که من چطور میتونم id که از دیتابیس میخونم رو به صورت هش شده سمت کاربر نشون بدم و اگر لازم بود فرستاده بشه به سرور بتونم از حالت هش شده خارجش کنم و همون 1,2,3,.... که در دیتابیس هست رو شناسایی کنم

نمیدونم راکت از چه سیستم و دیتابیسی استفاده میکنه ولی ظاهرا id هارو هش میکنه

توضیح تصویر رو وارد کنید

@ali.bayat
میشه راهنمایی کنید
مهمه برام


ثبت پرسش جدید
محسن مهری
تخصص : برنامه نویس back-end با زبان...
@mohsen.mehri6101 4 سال پیش آپدیت شد
0

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

کر کنین دکمه ی حذف گذاشتم که یه ریکوئست get فرستاده که id کاربر هم داخلشه

این کار خیلی اشتباهه هیچوقت این کارو نکن.حتی فرضی ؟!!همیشه موارد حذف باید به صورت post تعریف بشند . دلیلش هم واضحه فک کنی میفهمی.

سوم اینکه : این عکسی که نشون دادی به صورت خودکار توسط liveWire انجام میشه - این کاری نیست که مثلا حسام موسوی اومده باشه انجام بده اون اطلاعاتی هم که میبینی اونجان هش نیستن -فقط یک رشته یا ایدی تصادفی نسبت داده به صورت تجربی میگم نمیدونم این حرفم چقدر صحت داره - معمولا هش ها با این رشته شروع میشند"$2y$10$" خودت هم چند تا هش انجام بدی متوجه میشی همشون اولش این رشته رو ثابت دارند.

چهارم جواب سوال نهاییت : تقریبا کاری که میگی نمیشه .گفتم مگه اینکه سرورت یک ابر کامپیوتر باشه


ali
@ali.securenetwork 4 سال پیش مطرح شد
0

@mohsen.mehri6101

وقت بخیر

با بخشی از حرفاتون موافقم کاملا ولی چنتا نکته رو بگم:

اول اینکه اگر خودمون یه تابع encode و decode اختصاصی که بر اساس الگوریتمی که خودمون بهش میدیم عمل میکنه بنویسیم با همین سرورای معمولی هم میشه یه رشته رو هش کرد هم رشته ی اصلی رو برگردوند ولی این یه سیستم و الگوریتم شخصیه و من این سوالو مطرح کردم چون میخوام ببینم بقیه چه کاری میکنن...
دوم اینکه خیلی از رشته هایی که با md5,sha1 هش شدن (رشته های ساده البته) به راحتی قابل برگشت هستن و سایت هایی هستن که این کارو میکنن مثل
این سایت
پس لزوما نیازی به ابر کامپیوتر نیست
سوم اینکه در مورد ارسال درخواست به صورت post کاملا موافقم
ولی اون یه مثاله واقعا
شما فرض کن یه رکورد از جدولی که اهمیت بالایی نداره قراره ویرایش بشه
هر رکورد شامل یه آیدی اختصاصی هست که تو دیتابیس ذخیره شده
من تو پنل ادمین همه ی فیلد هارو لیست کردم (که شامل آی دی اختصاصی اون رکورد هم میشه-چون باید این آی دی رو برگردونم تا بدونم چه رکوردی باید ویرایش بشه) و هر فیلد دکمه ی ویرایش داره
تمام کاری که من میخوام انجام بدم اینه که شناسه ی اون رکورد وقتی اینسپکت میگیریم به صورت هش شده باشه (منظورم از هش لزوما یه رشته ی ۶۰ کاراکتری نیست ، صرفا بتونه به جای نمایش اعداد 1,2,3,4,... به عنوان آی دی یک رشته ی نامفهوم تر رو به عنوان شناسه ی اون رکورد نشون بده)

امیدوارم منظورمو رسونده باشم


محسن مهری
تخصص : برنامه نویس back-end با زبان...
@mohsen.mehri6101 4 سال پیش مطرح شد
0

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

  • اما با این قسمت که گفتین یک تابع دیکد و اینکود اختصاصی بنویسم .به نظرم اینکارو نکنید بهتره - چون مثلا اگه اکسل کار کرده باشید میبینید که چند تا فیلد رو که توش پر میکنیم خود اکسل میتونه تولید سطرهای دیگه رو بر اساس سطرهای قبلی تشخیص بده.
    شما فرض کن این تابع رو نوشتی . من با درخواست های ajax پشت سر هم میتونم در نهایت فرمول تابع شما رو به دست بیارم . کلا هش کردن موضوع پیچیده ای هستش و به نظرم از اون مباحثیست که ما صرفا فقط باید استفاده کننده از اون باشیم نه طراحش .
    موفق و پیروز باشید

IrajJavidan
@IrajJavidan1 4 سال پیش آپدیت شد
ali
@ali.securenetwork 4 سال پیش مطرح شد
0

@mohsen.mehri6101
حرفتون درسته ولی من هدفم این نیست که هش تولید شده تحت هیچ شرایطی دیکود نشه
من به این مسئله به چشم یه مورد امنیتی نگاه نمیکنم
صرفا یه مسئله هست برام که میخوام ببینم افراد مختلف چطور حلش میکنن ودر نهایت خوش حال میشم که به راه حلی برسم که بتونم ازش تو جاهایی که نیاز دارم استفاده کنم
ولی یه راه حل اصولی


ali
@ali.securenetwork 4 سال پیش مطرح شد
0

@IrajJavidan1
فکر کنم بارها شنیدین که غیر ممکنی وجود نداره
امتحان کردن این قضیه که md5 دیکود میشه یا نه هم خیلی کار سختی نیست

984d8144fa08bfc637d2825463e184fa

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

ali123

رسید
یعنی هش شده


ali
@ali.securenetwork 4 سال پیش مطرح شد
0

@ali.bayat
@mhyeganeh
@hesammousavi

اگه امکانش هست ممنون میشم راهنمایی کنید


aliiiabniki
تخصص : full stack developer
@aliiiabniki 4 سال پیش مطرح شد
0

سلام
نمیدونم کارتون راه میفته یا نه ولی با توابع base64_encode و base64_decode میتونی یه رشته رو (همونطور که از اسم توابع معلومه) اینکود و دیکود کنی
ولی بازم بهتره بقیه دوستان نظرشون رو بگن
شاید به راه حل بهتری رسیدین


محمدحسن یگانه
تخصص : Full-Stack Web Developer Freel...
@mhyeganeh 4 سال پیش مطرح شد
0

برام سواله که دقیقا هدفتون از این کار چیه و شاید راه ساده تری وجود داشته باشه... در کل به نظرم اینکه آیدی ها رو خواسته باشیم هش کنیم و بعد دوباره دیکود کنیم به این شکل سربار زیادی داره و از طرفی اگر بصورت هش نشده نمایش بدیم نباید قضیه مهم و مشکل زایی هم باشه.

اگر نگرانیتون بدلیل ملاحظات امنیتی هست که مثلا کاربری نتونه پست یا محصول کاربر دیگری رو تغییر بده یا حذف کنه این قضیه بر میگرده به قوانین Authoriztion تون که باید حتما پیاده سازی کرده باشید و قبل از هر گونه عملیاتی این موارد بررسی بشوند. با این وضعیت حتی اگر آیدی ها بصورت عمومی هم قابل دسترس باشند هیچ مسئله ای ایجاد نخواهد کرد.

یک راه دیگرش هم شاید استفاده از فیلدی غیر از آیدی در چنین مواقعی باشه. مثلا بیاید برای هر محصول یک شناسه یکتا ایجاد کنید و از این به بعد بجای ایدی که یک int از نوع increment ساده هست از این شناسه یکتا استفاده کنید. چیزی مثل شماره فاکتورها یا slug مقالات یا...


IrajJavidan
@IrajJavidan1 4 سال پیش مطرح شد
0

@ali.securenetwork این سایت و سایت هایی که ادعای decrypt md5 رو دارن، یک دیتابیسی از کلمات و هششون دارن و وقتی شما اون هش رو وارد میکنین در دیتابیس سرچ میکنن و اگه وجود داشت، متن رو بر میگردونن


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام