PDA

View Full Version : اشکال امنیتی در سیستم ساده php



mamadco
جمعه 22 خرداد 1394, 20:28 عصر
سلام دوستان مشکل من اینکه ، مثلا در داخل پنل کاربران که ساختم ، یه صفحه هست واسه پرداخت
روی لینک پرداخت که کلیک میشه ، ایدی پست رو به صورت get به صفحه ی پرداخت میفرسته ، مثلا : mysite.com/pay?id=10
حالا اگه هر کاربر دیگه که وارد پنلش بشه و این ادرس رو mysite.com/pay?id=10 داخل پنلش بزنه به صفحه پرداخت اون یکی کاربر وصل میشه
به نظرتون چ کنم ؟

reza_alie
جمعه 22 خرداد 1394, 21:51 عصر
خوب شما می تونی با post این کارو انجام بدی که به این مشکل برنخوری

mamadco
شنبه 23 خرداد 1394, 07:23 صبح
مرسی اما اگه با post بفرستم مجبورم به صورت hidden ، ایدی پست رو بفرستم ، راه دیگه ای هست ؟ مثلا با سشن بفرستم چطوریاس ؟

محسن شامحمدی
شنبه 23 خرداد 1394, 07:52 صبح
به صفحه پرداخت اون یکی کاربر وصل میشه
یعنی پول یکی دیگه رو پرداخت کنه؟.خیلی خوب می شه اونطوری
درست ترین روشی که بنظرم می رسه و همیشه ازش استفاده می کنم اینه:
id کاربر روی توی session ذخیره داشته باشی.بعد توی صفحه pay.php آیدی کاربر رو از سشن بخونی.

hamedarian2009
شنبه 23 خرداد 1394, 10:10 صبح
معمولا موقع لاگین اطلاعات کاربر را داخل سشن ذخیره میکنند که برای مشخص شدن سطح دسترسی کاربر هم از همین سشن استفاده میشه و id رو هم به همین صورت از سشن بخونید البته موارد امنیتی رو در سشن رعایت کنید بهتره

Unique
شنبه 23 خرداد 1394, 13:18 عصر
خوب شما می تونی با post این کارو انجام بدی که به این مشکل برنخوری
کسی که میخواد سوء استفاده کنه شما با get بفرستی یا post بالاخره سوء استفاده میکنه.


حالا اگه هر کاربر دیگه که وارد پنلش بشه و این ادرس رو mysite.com/pay?id=10 داخل پنلش بزنه به صفحه پرداخت اون یکی کاربر وصل میشه
معمولا کسی این کار را نمیکنه ! یعنی منطقی نیست بخواد پرداخت یکی دیگه را انجام بده ! اما از نظر امنیتی نباید اینطور باشه و حتی ممکنه مشکلات دیگه ای به وجود بیاره.

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

توی مواردی هم که کاربر لاگین نمیکنه عموما ID سبد خرید را توی session ذخیره میکنن و دیگه نیاز نیست شماره پرداخت یا سبد خرید را توی get یا post ارسال کنند. از این روش دوم برای کاربری که لاگین هم کرده میشه استفاده کرد اما کار از محکم کاری عیب پیدا نمیکنه.

mamadco
پنج شنبه 28 خرداد 1394, 06:28 صبح
دست همگی درد نکنه ، از روش اقای Unique (http://barnamenevis.org/member.php?11933-Unique) رفتم مرسی

rezaonline.net
پنج شنبه 28 خرداد 1394, 20:14 عصر
شما احتمالا برای فرم هاتون token ساختید
همون توکن رو توی آدرس بکار ببرید تا آدرسهای غیر قابل حدسی داشته باشید .