• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
استفاده از آدرس دهی های رمزنگاری شده برای امنیت بیشتر
#1
سلام.
یه سوال ذهنم رو درگیر کرده بود...
فرض کنیم برای پیاده سازی یک نرم افزار تحت وب که نیازمند امنیت بالایی هست آیا میشه برای امن تر کردن آدرس دهی های صفحات از الگوریتم های رمزنگاری استفاده کرد؟
مثلا آدرس زیر رو در نظر بگیریم.
فرض کنیم مثلا یه لینکی داریم به شکل زیر:
کد:
page.php?id=234&ticket_id=30044‌

و عبارت
کد:
id=234&ticket_id=30044‌

رو با استفاده از یک الگوریتم قابل بازگشت تبدیل به یک کد کنیم و مثل به این شکل در بیاریم:
کد:
page.php?code=56dfc78x565xfgh8
و توی اون صفحه دوباره از حالت کد در بیاریم و پردازشش کنیم.
به نظرتون این روش روش خوبی هست؟ بهینه و امن هست؟
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#2
دلیلت چیه؟ چرا می خوای یه همجین کاری رو انجام بدی؟ صورت مسئله شما ناقصه. چه مشکل امنیتی وجود داره که می خوای با این روش حلش کنی؟
  پاسخ
تشکر شده توسط : vejmad
#3
تخصص زیادی توی حوزه امنیت ندارم. گفتم شاید اینجوری بشه جلوی دسترسیها از طریقurl رو گرفت.و به نوعی امن ترش کرد.البته برای مواقعی که از متد پست استفاده نمی کنیم.
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#4
یه جور میشه که فکر کنم توی phpdeveloper.ir توضیح داده .
اینکه از یک هش عجق وجق استفاده کنید . و اون رو ارسال کنید مثلاً
index.php?id=1&hash_id=aasssdddfffggg

بعد شما id رو میگرید از هشی که ساختید عبور میدید نتیجه رو با hash_id مقایسه میکنید .
اگر درست بود آدرس صحیح .

نقل قول:دلیلت چیه؟ چرا می خوای یه همجین کاری رو انجام بدی؟ صورت مسئله شما ناقصه. چه مشکل امنیتی وجود داره که می خوای با این روش حلش کنی؟
برای جلوگیری از ربات ها و کراولر ها که مثلاً شما آدرس
index.php?id=1 رو میدی اون خودش دونه دونه تا مثلاً 100 میره و اطلاعات ایمیل و ... رو جمع میکنه .Big Grin
اگه اینکارو کنیم یه کمی کارش سخت میشه ، یعنی باید توی محتوا بگرده واسه لینک هاTongue
  پاسخ
تشکر شده توسط :
#5
این مورد اگه انجام بشه توی بحث SQL Injectionها هم تاثیر داره؟

منظورم اینه که غیر از این کوئری کد شده چیز دیگه ای توی آدرس نباشه..
بنده طعم ايمان را نمي چشد، تا اينكه دريابد آنچه اتفاق نيفتاده است نمي شد كه اتفاق بيفتد؛و آنچه شده و اتفاق افتاده است,نمي شد كه نشود و اتفاق نيفتد....حضرت علي(ع)
  پاسخ
تشکر شده توسط :
#6
صورت مسئله خیلی کلی و مبهمه.
یک روش کلی برای یک هدف کلی به این شکل خیر چندان معنایی نداره.
خیلی جاها هیچ فرقی نمیکنه پارامترها رو رمز بکنیم یا نکنیم.
همونطور که وحید گفت باید دید «دقیقا چه مشکل امنیتی ای وجود داره که می خوایم با این روش حلش کنیم ».
اونوقت میشه بطور دقیق هم تحلیل کرد.

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

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

البته این مثال «ربات ها و کراولر ها» که Reza آورد خب باز یه چیزی. میشه گفت یک مورد دقیق و با جزییات هست که دقیقا از چه چیزی چطوری میخوایم با این روش جلوگیری کنیم.
اما بهرحال مورد و کاربرد امنیتی خیلی مهمی هم نبود و بقول خودش هنوز هم راه از جای دیگه بازه.
اما این ایده بله میتونه در یک جای دیگری هم بکار بره به شرطی که شرایط و جزییات اون مورد هم شباهت ساختاری داشته باشه و چنین مکانیزمی رو طلب کنه.
  پاسخ
تشکر شده توسط : admin Reza ali786 pary_daryayi
#7
به طور کلی سعی کن برای بعضی از عملیات خاص اصلاً از get استفاده نکنی، مثل delete...
ولی آخه رمز کردنش چه معنی میده؟ حالا بخش value رو رمز کنیم معقول هست و استفاده هم میشه...
هر که با مرغ هوا دوست شود - خوابش آرامترین خواب جهان خواهد بود.
  پاسخ
تشکر شده توسط :
#8
(۱۳۹۱ شهریور ۰۸, ۰۷:۴۲ ب.ظ)Reza نوشته: یه جور میشه که فکر کنم توی phpdeveloper.ir توضیح داده .
اینکه از یک هش عجق وجق استفاده کنید . و اون رو ارسال کنید مثلاً
index.php?id=1&hash_id=aasssdddfffggg

بعد شما id رو میگرید از هشی که ساختید عبور میدید نتیجه رو با hash_id مقایسه میکنید .
اگر درست بود آدرس صحیح .

نقل قول:دلیلت چیه؟ چرا می خوای یه همجین کاری رو انجام بدی؟ صورت مسئله شما ناقصه. چه مشکل امنیتی وجود داره که می خوای با این روش حلش کنی؟
برای جلوگیری از ربات ها و کراولر ها که مثلاً شما آدرس
index.php?id=1 رو میدی اون خودش دونه دونه تا مثلاً 100 میره و اطلاعات ایمیل و ... رو جمع میکنه .Big Grin
اگه اینکارو کنیم یه کمی کارش سخت میشه ، یعنی باید توی محتوا بگرده واسه لینک هاTongue

اون csrf هست قضیش فرق می کنه
http://en.wikipedia.org/wiki/Cross-site_request_forgery

در مورد بند آخر هم خب این یه دلیلش هست. ولی خوندن صفحات هم کاری نداره. ولی خب باید مشخص بشه برای چی بعد بگین این روش خوبه این مزایا رو داره این معایب رو
  پاسخ
تشکر شده توسط : Reza
#9
(۱۳۹۱ شهریور ۰۹, ۱۲:۱۹ ق.ظ)hamid_80386 نوشته: به طور کلی سعی کن برای بعضی از عملیات خاص اصلاً از get استفاده نکنی، مثل delete...
ولی آخه رمز کردنش چه معنی میده؟ حالا بخش value رو رمز کنیم معقول هست و استفاده هم میشه...
پس برای delete چکار میکنید ؟ مثلا وقتی میخوایم روی آیکن delete کلیک کنیم مجبوریم از get استفاده کنیم .
اینجا رمزگذاری برای اینکه نشه از url دسترسی داشت کاربرد نداره؟
و البته از اون طرف هم ایزوله کردن مقدار ...
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#10
والا حمید جان من از همون get استفاده میکنم اما جانب احتیاط رو رعایت میکنم همیشه .Tongue
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان