ارسال مقادیر مهم از طریق متد GET
سلام
فرض کنید مجبورید یک یک یا چند متغییر را که قرار هست از مقادیر آنها استفاده کنید و اطلاعاتی را از database استخراج کنید و حتی مجبور باشید برخلاف منطق GET مقداری در بانک اطلاعاتی را مطابق این متغییر ها update کنید
حالا شما فکر می کنید برای بالا بردن امنیت در چنین سرویسی چی کارهایی می توان انجام داد؟
مثلا فرض کنید که هم مقادیر عددی و هم رشته ارسال می شود
آیا استفاده از توابعی چون md5 یا sha1 را پیشنهاد می کنید، تا اینطوری کسی نتواند مقادیر ارسالی را تغییر دهد ؟ ولی در این روش بازیابی اطلاعات به حالت اول به چه صورت انجام می شود؟
لطفا هر روشی را مناسب می دانید توضیح دهید
با تشکر
نقل قول: ارسال مقادیر مهم از طریق متد GET
کلا ارسال اطلاعات مهم با متد GET پیشنهاد نمیشه ... !
اما اگه مجبورید پیشنهاد میکنم خودتون یه تابع هش بنویسید و ازش استفاده کنید ...
نقل قول: ارسال مقادیر مهم از طریق متد GET
میشه بیشتر راهنمایی کنید
خودتون می تونید یک مثال بزنید؟
با تشکر
نقل قول: ارسال مقادیر مهم از طریق متد GET
در درجهء اول باید ولیدیشن سمت سرور صورت بگیره. یعنی ببینی اون مقداری که ارسال شده جزو مقادیر مجاز و مقادیری که اون کاربر خاص مجاز به ارسال اونها بوده هستن یا نه.
قایم کردن اطلاعات از خود کاربر که معمولا معنا نداره و امنیت کامل هم نمیده.
مثلا کاربر ممکنه بدون اینکه مفهوم پارامترهای شما رو بدونه اونا رو بصورت تصادفی دستکاری کنه یا برابر مقادیری که برای کاربر یا کاربرد و صفحهء دیگه ای دیده بذاره. این برنامهء شماست که باید ولیدیشن کامل سمت سرور داشته باشه و تشخیص بده آیا مقادیر ارسال شده مجاز هستن و اون کاربر سطح دسترسی لازم برای ارسال مقادیر مورد نظر رو داره یا نه.
در این زمینه GET و POST هردو قابل سوء استفاده و خرابکاری هستن. ولی GET راحتتره چون هرکس میتونه بدون هیچ برنامه و کار اضافه ای، پارامترها رو در آدرس بسادگی تغییر بده و تایپ کنه.
فکر نکنید اگر چیزی رو POST کردید به این معنی هست که کاربر نمیتونه اون رو تغییر بده یا اطلاعات دیگری رو ارسال کنه.
البته شاید مورد شما چیز دیگری باشه که در اینصورت باید توضیح بیشتر و دقیقتری بدید یا مثال بزنید تا بررسیش کنیم.
نقل قول: ارسال مقادیر مهم از طریق متد GET
دوست عزیز ممنون که راهنمایی می کنید
من بیشتر توضیح میدم:
ببینید فکر کنید من مجبورم چندتا لینک در اختیار تمام کاربرها قرار بدم و هیچکاری به عضویت هم ندارم یعنی از login و session هم خبری نیست و قراره این لینکها از یک سایت و صفحه دیگری کلیک بشن
حالا شما فرض کنید من این لینک رو به یک عدد 6 رقمی خلاصه کردم (مثلا)
http://site.com/162223
حالا این روش چندین اشکال داره که من یک تاپیک دیگه هم برای این موضوع درست کردم
1- کاربر به راحتی می تونه مقدار رو تغییر بده
2- می تونه با برنامه یا مثلا javascript بهصورت یک loop هر چند بار بخاد برای این لینک و لینکهای دیگر با عدد مشابه click بفرسته
حالا من می خوام جلوی این کار رو بگیرم
شما چه پیشنهاد می کنید؟
با تشکر
نقل قول: ارسال مقادیر مهم از طریق متد GET
خب این لینک چکار میکنه؟ باعث انجام چه عملیاتی میشه؟ هدف شما چیه؟
نقل قول: ارسال مقادیر مهم از طریق متد GET
این لینک قراره مطابق با اون شماره صفحه را به یک آدرس دیگری تغییر مسیر دهد و در بانک اطلاعاتی مقداری را افزایش دهد
نقل قول: ارسال مقادیر مهم از طریق متد GET
نقل قول:
این لینک قراره مطابق با اون شماره صفحه را به یک آدرس دیگری تغییر مسیر دهد
چه آدرسی مثلا؟ حالا فرضا کاربر عدد رو تغییر بده میره به یه آدرس دیگه، ولی برای چی باید این کار رو بکنه. اگر اون آدرس آدرسی باشه که همهء کاربران بتونن ببینن، پس نیازی نیست محدودش کنیم.
نقل قول:
و در بانک اطلاعاتی مقداری را افزایش دهد
چه مقداری؟ مقدار چه اطلاعاتی؟
نقل قول: ارسال مقادیر مهم از طریق متد GET
ببینید فرض کنید من میخام این لینکها رو به عنوان یک سیستم تبلیغاتی در اختیار کاربرها قرار بدم تا با کلیک بازدید کننده ها هم به آدرس مورد نظر انتقال داده بشند و هم قبل اینکار با ورود به آدرس اولی
htt://site.com/123454
اطلاعات صاحب تبلیغات به روز بشه :
تعداد بازدید
آخرین دفعه بازدید
و...
اما این روش مشکلی که داره اینکه آدرس خیلی واضح هستش و هر کسی می تونه این سیستم رو دور بزنه و چندین کلیک برای این لینکها بفرسته
حالا میخام بدونم که چطوری هم آدرس سایت رو (سایت دوم - سایت تبلیغات دهنده) از دید کاربر مخفی کنم و اگر این روش عددی که من گفتم خوبه چطوری این عدد رو نامفهوم کنم تا کسی نتونه به راحتی به این سیستم نفوذ کنه و کلا چطور دفعات بازدید را محدود کنم که مشکلی کاربران حقیقی نداشته باشند؟
با تشکر
نقل قول: ارسال مقادیر مهم از طریق متد GET
نقل قول:
نوشته شده توسط
MSN_Issue
کلا ارسال اطلاعات مهم با متد GET پیشنهاد نمیشه ... !
اما اگه مجبورید پیشنهاد میکنم خودتون یه تابع هش بنویسید و ازش استفاده کنید ...
ممنون می شم یه تابع هش که خودتون درست کردید برامون بذارید
نقل قول: ارسال مقادیر مهم از طریق متد GET
سلام
آقا رضای گل شما خودت پیشنهادی نداری عزیز؟ :چشمک:
نقل قول: ارسال مقادیر مهم از طریق متد GET
نقل قول:
نوشته شده توسط
رضا قربانی
ممنون می شم یه تابع هش که خودتون درست کردید برامون بذارید
توابع هش با توجه به نوع و مکانی که مورد استفاده قرار میگیرند، میتونند متفاوت باشند (برگشت پذیر یا یک طرفه ... )
مثلا یک تابع هش ساده میتونه اینطوری باشه :
<?php
function h1 ($str, $method){
$res = '';
$time = ''.Date(U);
switch($method){
case 0: $str = $str; break;
case 1: $str = md5($str); break;
case 2: $str = md5(hash(md4, $str)); break;
case 3: $str = md5(substr(md5($str), 10, 20)); break;
}
for($i=0; $i<10; $i++){
$res .= ($str[$i]!=null)?$str[$i]:'';
$res .= $time[$i];
}
return $res;
}
?>
همین طور که می بینید، متد 0 برگشت پذیر، متد 1 تقریبا برگشت پذیر (!) و متد های 2و3 تقریبا یکطرفه هستند ...
بسته به نیازتون میتونید هرطور که خواستید این توابع رو طرحی کنید .
این لینک هم میتونه مفید باشه ...
موفق باشید...
نقل قول: ارسال مقادیر مهم از طریق متد GET
ممنون دوست عزیز
ولی حالا شما فرض کنید من با همین hash مشکل اولم حل شد یعنی کسی نمی تونه لینک رو تغییر بده یا به لینکهای دیگه دسترسی داشته باشه اما برای کنترل تعداد نمایش لینک چه پیشنهادی دارید مثلا گفتم اگه کسی بخاد این لینک رو با برنامه یا اسکریپتی که خودش نوشته به دفعات زیاد کلیک کنه (هر 3ثانیه یکبار) چطوری باید این مشکل رو حل کرد؟ :متفکر:
با تشکر