در دنیای تجارت الکترونیکی، امنیت تراکنشها نقشی حیاتی در حفظ اعتماد کاربران دارد. یکی از مکانیزمهای امنیتی مهم در مسیر پرداخت اینترنتی، بررسی Referrer یا همان «ارجاعدهنده» است. هنگامی که کاربر روی دکمه پرداخت کلیک میکند، مرورگر معمولاً اطلاعاتی درباره صفحهای که پرداخت از آن آغاز شده، همراه درخواست پرداخت ارسال میکند. این داده برای زرینپال ضروری است تا:
- هویت فروشنده را تأیید کند
- از ورود به صفحات جعلی (فیشینگ) جلوگیری شود
- اطمینان حاصل شود تراکنش از دامنه قانونی پذیرنده شروع شده است
اگر Referrer خالی، ناقص یا نامعتبر باشد، سامانه امنیتی درگاه ممکن است تراکنش را متوقف کند تا از سوءاستفاده جلوگیری شود. در ادامه دلایل رایج این رخداد و راهکارهای مطمئن برای رفع آن را توضیح میدهیم.
۱) ارجاع از اپلیکیشنها، باتها یا شبکههای اجتماعی
وقتی خرید از داخل یک اپلیکیشن آغاز شود (تلگرام، اینستاگرام، بازیها یا برنامههای سازمانی)، ممکن است مرورگر خارجی که برای نمایش صفحه درگاه باز میشود:
- Referrer را ارسال نکند
- یا فقط نام اپلیکیشن را ارسال کند که مورد پذیرش نیست
این رفتار در پلتفرمهای مختلف متفاوت است و قابل پیشبینی کامل نیست.
راهکار موقت
تنظیم زیردامنه اختصاصی در زرینپال برای نمایش صفحه مرور خرید (Review Page)
مزایا:
✔ افزایش اعتماد مشتری در مسیر پرداخت
✔ ثبت Referrer معتبر
✔ جلوگیری از خطا و اختلال پرداخت
راهکار اصولی (مناسب اپلیکیشنهای حرفهای)
پیادهسازی:
- یک صفحه وب برای مرور خرید و نمایش اطلاعات سفارش
- یک صفحه وب برای نتیجه پرداخت (کالبک به اپلیکیشن)
کاربر باید قبل از ورود به درگاه پرداخت به صفحه مرور خرید منتقل شود و پس از تأیید نهایی به پرداخت هدایت گردد.
این روش بیشترین انطباق با الزامات امنیتی شاپرک را دارد.
۲) استفاده از ویژگیهای noopener و noreferrer در لینکها
گاهی توسعهدهندگان برای جلوگیری از حملات مهندسی تب (Tabnabbing) لینک پرداخت را به صورت زیر مینویسند:
<a href=”https://example.com” target=”_blank” rel=”noopener noreferrer”>پرداخت</a>
وجود noreferrer → Referrer حذف میشود.
راهکار
- لینک پرداخت را در همان صفحه (بدون باز شدن تب جدید) به صورت زیر اجرا کنید:
<a href=”https://example.com” target=”_self” rel=”external”>پرداخت</a>
اگر کسبوکار نیاز قطعی به باز شدن صفحه جدید دارد، باید تست کنید که حذف noreferrer مشکلی در سایر امنیتهای سایت ایجاد نکند.
۳) وجود Meta Tagهای محدودکننده در صفحه پرداخت
گاهی توسعهدهنده بهمنظور حریم خصوصی، تنظیم زیر اضافه میکند:
<meta name=”referrer” content=”no-referrer”>
این مقدار تمام Referrer را حذف میکند.
مقادیر دیگری مانند origin-when-cross-origin نیز Referrer را محدود میکنند.
راهکار
تنظیم مقدار مناسب:
<meta name=”referrer” content=”origin”>
یا در صورت عدم نیاز → حذف کامل این تگ
مقدار origin بدون ارسال URL کامل، دامنه معتبر را ارسال میکند و مورد پذیرش زرینپال است. برای کسب اطلاعات بیشتر نیز میتوانید به Mozilla MDN مراجعه نمایید.
۴) تنظیمات نادرست Referrer-Policy در سرور
سختگیری بیشازحد برای سیاستهای امنیتی سایت یا پیکربندی Web Server نیز میتواند باعث حذف Referrer شود؛ مانند:
Referrer-Policy: no-referrer
راهکار
- بررسی و اصلاح تنظیمات توسط ادمین سرور
- افزودن پیکربندی زیر بهعنوان راهکار کمکی:
<meta name=”referrer” content=”origin”>
این مورد در وبسایتهایی که چند CDN یا سرویس میانی دارند بیشتر دیده میشود.
۵) استفاده از ریدایرکت سروری در آغاز پرداخت
برخی سرورها هنگام ریدایرکت ممکن است Referrer را پاک کنند یا آن را منتقل نکنند (به خصوص اگر ریدایرکت از طریق یک سرویس میانی انجام شود). بهویژه Redirectهای:
- 301
- 302
راهکارهای درست
✔ استفاده از ریدایرکت سمت کاربر (JavaScript Forwarding)
یا اگر لازم است سمت سرور باشد:
✔ استفاده از 307 / 308
این دو نوع ریدایرکت کمترین تغییر را در Header ایجاد میکنند و مناسب مسیر پرداخت هستند.
چرا رفع این مشکل ضروری است؟
وجود Referrer معتبر در مسیر پرداخت برای حفظ امنیت و اعتبار تراکنشها ضروری است. در صورتی که Referrer نامعتبر یا خالی ارسال شود، زرینپال قادر به تشخیص منبع واقعی تراکنش نخواهد بود و بهمنظور جلوگیری از سوءاستفادههای احتمالی، پرداخت را متوقف میکند. این موضوع میتواند باعث بروز خطای امنیتی در تجربه کاربری خریدار شده و در نتیجه به اعتبار و اعتماد مشتریان نسبت به فروشگاه آسیب بزند.
همچنین تداوم چنین خطاهایی ممکن است موجب حساسیت ناظران شاپرک و در برخی موارد ارجاع به واحدهای نظارتی مانند مقابله با پولشویی یا تخلفات مالیاتی گردد. بنابراین اکیداً توصیه میشود که آغاز تراکنشها حتماً از طریق صفحهای تحت وب روی دامنه اصلی درگاه انجام شود، ساختار پرداخت در اپلیکیشنها با ارجاع به صفحات وب معتبر پیادهسازی گردد و توسعهدهندگان پیش از انتشار نهایی، عملکرد Referrer را در محیط واقعی مورد بررسی و آزمون قرار دهند تا از بروز اختلال در پرداخت کاربران جلوگیری شود.
جمعبندی
مشکل «Referrer خالی» یکی از رایجترین دلایل اختلال در فرآیند پرداخت اینترنتی است و در صورت بیتوجهی به آن، میتواند موجب توقف تراکنش و ایجاد تجربهای نامطلوب برای مشتری شود. آشنایی با دلایل بروز این مشکل و اصلاح شیوه ارجاع کاربر به درگاه پرداخت، از بروز خطاهای امنیتی جلوگیری کرده و موجب افزایش موفقیت تراکنشها خواهد شد.
رعایت الزامات امنیتی شاپرک و زرینپال در این مسیر ضروری است تا هویت فروشنده برای سیستمهای نظارتی و امنیتی بهدرستی تأیید گردد. در نهایت، اگر در هر بخشی از فرایند پرداخت با چالش یا ابهامی مواجه شدید، تیم فنی زرینپال آماده است تا در بررسی و رفع سریع مشکلات همراه شما باشد و بهترین راهکارها را متناسب با ساختار کسبوکار شما ارائه دهد