rabco
5 سال پیش توسط rabco مطرح شد
19 پاسخ

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

دوستان سلام
من به ی مشکل خوردم زمانی که کاربر پرداختش رو انجلم میده و بر میگرده با سایت (از طریق درگاه ملت ) سشن ها پاک میشن و کاربر خارج میشه از پنلش تا اینجا فهمیدم که مشکل از csrf هست و توی میدلویر VerifyCsrfToken آدرس url برگشت از درگاه رو گذاشتم اما باز هم این ایراد رو دارم.
اما اگر توی کانفیگ سشن ها مقدار samesite رو روی none بگذارم این مشکل حل میشه اما دیگه csrf کلا غیر فعال میشه برای سشن ها چکار کنم که بدون دستکاری samesite سشن ها غیر فعال نشن ؟
@hesammousavi
@ali.bayat


ثبت پرسش جدید
حسام موسوی
تخصص : طراح و برنامه نویس
@hesammousavi 5 سال پیش مطرح شد
0

سلام اینکه کاربر بره وارد درگاه پرداخت بشه و بعد از درگاه پرداخت وارد وبسایت شما بشه چه ربطی به پاک شدن سشن شما داره اصلا ؟


rabco
تخصص : Full Stack developer
@rabco 5 سال پیش آپدیت شد
0

@hesammousavi
این اتفاق میفته برام و کاربر از حساب کاربریش خارج میشه و دوباره تقاضای ورود میکنه و همچنین سبد خرید من با سشن هاست که سشن اون هم از بین میره
خودتون اگر زحمتی نیست چک کنید ممنون اگر عملیات رو هم کنسل کنید باز همون اتفاق میفته
ربکو


alireza
@mohammad.fathi9k 5 سال پیش مطرح شد
0

بنده ام همین مشکلو دارم شما حلش کردید


woz
تخصص : fan of open source world
@wozniak 4 سال پیش مطرح شد
0

این مورد که شما می فرمایید که csrf کلا غیر فعال میشه و چک نمیشه صحیح نیست باز چک میشه. آیا اشتباه میکنم منو تصحیح کنید


سید محمد هاشمی
تخصص : برنامه نویس فول استک
@smhkhorram 4 سال پیش مطرح شد
-1

سلام وقت بخیر. من هم دقیقا همین مشکل رو دارم. با درگاه ذرین پال چنین مشکلی ندارم. هم سش سبد خرید پاک میشه هم کاربر رو میندازه بیرون.


نوب
تخصص : کدنویس نوب :)
@yk5742g 4 سال پیش مطرح شد
0

@rabco سلام
برو توی کانفیگ و فایل session و اونجا ببین گزینه expire_on_close حتما false باشه و lifetime هم بالای 30 باشه
و گزینه بعد اینکه توی فرمتون حتما اگر post هست @csrf ست کنین


سید محمد هاشمی
تخصص : برنامه نویس فول استک
@smhkhorram 4 سال پیش مطرح شد
0

@yk5742g سلام مواردی که گفتید کاملا تنظیم شده ست. مشکل از جای دیگه ایه. قراره فردا تماس بگیرم با به پرداخت. اصلا خیلی بی معنیه این اتفاق.
اما اینگه فرمودید حتما اگر post هست @csrf ست کنین ، موقعی که داریم میریم به درگاه خوب csrf هست.ولی موقع برگشت که در اختیار ما نیست این مورد. شما دقیقا منظورتون کجا ست ؟ کجا میگید ست کنیم ؟


سید محمد هاشمی
تخصص : برنامه نویس فول استک
@smhkhorram 4 سال پیش مطرح شد
0

جناب @hesammousavi سلام شما نظری ندارید ؟ من قبلا با درگاه ملت کار کردم روی سه تا پروژه دیگه. هیچوقت این اتفاق نمی افتاد.


مهدی مهدوی
تخصص : تازه وارد
@mehdi.mahdavi97 4 سال پیش مطرح شد
0

سلام
@smhkhorram
از ابر آروان استفاده نمی کنید احتمالا ؟


محمدرضا قمی اویلی
تخصص : لاراول
@ghomi 4 سال پیش مطرح شد
0

از طریق میدلور VerifyCsrfToken مقدار روت مورد نظر از لیست چک شدن خارج کنید.

    protected $except = [
        'payment/callback',
    ];

توی بازگشت انتظار نداشته باشین که مقدار user وجود داشته باشه چون درخواست از کلاینت کاربر ارسال نمیشه بلکه از طریق درگاه بانک ارسال میشه


kiyaee
تخصص : Backend Developer
@kiyanakiyaee 4 سال پیش مطرح شد
0

@mehdi.mahdavi97 چرا از آروان استفاده می کنیم و به این مشکل خوردیم متاسفانه اگر راه حلی دارید ممنون میشم بگید


امیرحسین عنبری
تخصص : Web application developer
@amiranbari33 4 سال پیش مطرح شد
1

سلام. من هم همین مشکل رو داشتم و خیلی وقته دنبالش بودم.
شما وقتی میخواید برید به درگاه پرداخت یک ادرس callback میدید. دقیق یادم نیست ولی یا باید ادرس رو بدون www میدادید یا با www
یعنی این 2 مورد رو امتحان کنید:

https://www.test.com
https://test.com

یکی از این ها جواب داده بود برای من .امتحان کنید ممنون
@rabco


امیرحسین عنبری
تخصص : Web application developer
@amiranbari33 4 سال پیش مطرح شد
0

مشکل اصلی از ارائه دهنده واسط درگاه پرداخت هستش


مهدی مهدوی
تخصص : تازه وارد
@mehdi.mahdavi97 4 سال پیش مطرح شد
0

سلام
@kiyanakiyaee
ابر آروان ظاهرا اپشنی داره که کوکی ها رو کش میکنه
این مورد را غیرفعال کنید ( ما این مشکل رو داشتیم و پس از کلی بررسی همکاران این دلیل رو واسش پیدا کردن)


mahdiarrr74 Mransouri
@mahdiarrr74 3 سال پیش مطرح شد
0

@mehdi.mahdavi97
مرسی مرسی مرسی دقیقا مشکل همین بود و با افزودن این سه خط کد درست شد

header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0");
    header("Cache-Control: post-check=0, pre-check=0", false);
    header("Pragma: no-cache");

حسین ستاری
تخصص : برنامه نویس
@Ho3ein 3 سال پیش مطرح شد
0

درود من هم چنین مشکلی داشتم با درگاه ملت و خب یسری از دوستان گفتن ادرس callback رو یا باید با www یا بدون اش بدیم به بانک که خب برا من کار نکرد این روش یا اینکه اون روت رو بدون csrf توکن کنیم که بازم کار نکرد برای من و من تنها کاری که تونستم کنم این بود که اون روت رو از میدلور auth بردارم و برسی کنم مقداری برگشتی وجود داره یا نه و اگر وجود داشت و مقدار resnumber برابر با مقدار توی جدول بود و پرداخت انجام شده بود از طریق رابطه کاربر رو بدست بیارم و لاگینش کنم و بقیه داستان
این کاری بود که من تونستم کنم امیدوارم بدردت بخوره.


جواد رنجبر
تخصص : برنامه نویس
@javadrsty 3 سال پیش مطرح شد
0

@mahdiarrr74

این سه خط کد رو کجا باید وارد کنیم؟


Mohammad Nazari
@mn68728 2 سال پیش مطرح شد
0

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


علی بیدرام
تخصص : توسعه دهنده وب
@bidram 2 هفته پیش آپدیت شد
0

مشکل حذف سشن (session) سبد خرید
طی آپدیت هایی که مرورگر ها ارائه کردن کوکی های نا امن پاک میشه پس این مورد رو خود مرورگر داره حذف میکنه و نه تقصیر درگاه پرداخته نه سرویس دهنده هاست و سرور، به متن زیر دقت کنید

کروم اعلام کرد در نسخه ۸۰ به بعد اقدام به اجرای یک سیستم طبقه بندی کوکی‌های امن و پیش فرض خواهد کرد. برای کوکی‌هایی که مقدار دهی SameSite را انجام نداده باشند بصورت پیش فرض مقدار دهی SameSite=Lax را در نظر خواهد گرفت. و تنها کوکی هایی که بر اساس SameSite=None; Secure تنظیم شده باشند در زمینه با محتوای خارجی در اتصال امن (https) در دسترس خواهند بود. در نتیجه کوکی‌هایی که این شرایط را نداشته باشند مسدود شده و حذف می شوند.

پس از آن فایرفاکس نیز به این قانون پیوست و در نسخه های جدید این قوانین را اعمال کرده است.

برای حل این مشکل به صورت کلی در سایتهایی که از انجین آپاچی استفاده میکنند میتونید از تکه کد ذیل استفاده کنید در فایل htaccess (مثل وردپرس، جوملا و ... )

<ifmodule mod_headers.c="">
Header always edit Set-Cookie ^(.*)$ $1;Secure;SameSite=None
</ifmodule>

حل مشکل حذف سشن (session) بعد از برگشت درگاه پرداخت در لاراول

برای یکپارچگی کد و راحت بودن کار در فریم ورک لاراول بهتره تو خود تنظیمات لاراول این مشکل رو حل کنید کافیه فایل session.php در پوشه config رو باز کنید و مقدار samesite برابر none قرار بدید. تفاوت مقدارهای samesite به صورت ذیل است:

  • Lax مرورگر در درخواست‌های cross-site کوکی ارسال نمی‌کند (به صورت پیش
    فرض در کوکی‌ها اعمال می‌شود).
  • Strict مرورگر کوکی را فقط برای درخواست‌های same-site ارسال می‌کند.
  • None به شما امکان می‌دهد کوکی‌ها را هم با درخواست‌های cross-site و هم
    same-site ارسال کنید.

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

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