"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكن للبرامج الوسيطة TrimStrings الخاصة بـ Laravel أن تسبب مشكلات

كيف يمكن للبرامج الوسيطة TrimStrings الخاصة بـ Laravel أن تسبب مشكلات

تم النشر بتاريخ 2024-11-08
تصفح:417

How Laravel

Laravel هو إطار عمل شائع في عالم PHP، ويقدم للمطورين أدوات رائعة لتبسيط عملهم. ومع ذلك، في بعض الأحيان يمكن أن تؤدي وسائل الراحة هذه إلى مشاكل غير متوقعة. في هذا المنشور، سأناقش كيف يمكن للبرامج الوسيطة TrimStrings في Laravel أن تسبب مشكلات وكيفية حلها.

ما هي البرامج الوسيطة TrimStrings وماذا تفعل؟

يتم استخدام البرنامج الوسيط TrimStrings في تطبيقات Laravel لقص المسافات البيضاء تلقائيًا من بيانات الطلبات الواردة، مثل مدخلات النماذج. يعد هذا مفيدًا بشكل خاص عندما يترك المستخدمون مسافات عن طريق الخطأ في بداية أو نهاية حقول الإدخال. على سبيل المثال، إذا قام المستخدم بإدخال "[email protected]" بمسافات حول عنوان البريد الإلكتروني في نموذج، فإن البرنامج الوسيط TrimStrings سوف يقوم بقص هذه المسافات، مما يضمن معالجة "[email protected]" فقط. .

هذه الميزة مفيدة لمنع الأخطاء الناجمة عن المسافات البيضاء غير الضرورية وللتعامل مع البيانات الأنظف. ومع ذلك، كما هو الحال دائمًا، في بعض الحالات الخاصة، يمكن أن يؤدي هذا السلوك الافتراضي إلى عواقب غير مقصودة.

ماذا حدث؟

في مشروع كنا نتكامل فيه مع مزود دفع في البرازيل، كنا بحاجة إلى التقاط نتائج الدفع والتحقق من صحتها من خلال نظام رد الاتصال. يرسل مزود الدفع نتيجة المعاملة إلى الخادم الخاص بنا عبر طلب POST، ونقوم بالتحقق من صحة الطلب عن طريق إجراء التحقق من التوقيع/التجزئة.

تتبع عملية التحقق هذه منطقًا مباشرًا:

  1. نأخذ البيانات التي يرسلها المزود.
  2. جميع البيانات متسلسلة في سلسلة واحدة.
  3. تم تجزئة هذه السلسلة باستخدام خوارزمية SHA256 مع المفتاح السري المقدم من مزود الدفع.
  4. تتم مقارنة التجزئة الناتجة مع التجزئة المرسلة من قبل الموفر. إذا تطابقت، يتم قبول الطلب؛ وإلا فهو مرفوض.

كيف حددنا المشكلة؟

في البداية، كان من الصعب فهم سبب رفض بعض الطلبات الصالحة. ومع ذلك، بعد فحص سجلات Nginx، لاحظنا أن المعلمة full_name في الطلب الوارد تحتفظ بالمسافات الزائدة. على الرغم من ذلك، تم قطع هذه المساحات على الخادم الخاص بنا، مما تسبب في فشل التحقق من التجزئة. وذلك عندما أدركنا أن البرنامج الوسيط TrimStrings كان يسبب هذه المشكلة.

ما هو الحل؟

لتجنب مثل هذه المشاكل، من الضروري تعطيل البرنامج الوسيط TrimStrings لمسارات أو طلبات محددة. قدم Laravel 8 طريقة TrimStrings::skipWhen، والتي توفر حلاً مخصصًا لهذه الحالة.

فيما يلي مثال لكيفية تطبيق هذا الحل باستخدام موفر:

use Illuminate\Foundation\Http\Middleware\TrimStrings;
use Illuminate\Http\Request;

// ...

TrimStrings::skipWhen(function (Request $request) {
    return $request->is('api/v1/integrations/foo-provider/callback');
});

يعمل مقتطف التعليمات البرمجية هذا على تعطيل البرنامج الوسيط TrimStrings لمسار معين. في هذه الحالة، لن يتم إجراء القطع للطلبات الواردة من مسار api/v1/integrations/foo-provider/callback، مما يضمن أن عملية التحقق من التجزئة تعمل بسلاسة.

خاتمة

تعمل الميزات الافتراضية في Laravel بشكل عام على تسهيل الأمور، ولكن في سيناريوهات معينة، يمكن أن تؤدي إلى نتائج غير متوقعة. ولذلك، من المهم أن نفهم كيفية عمل الأدوات التي نستخدمها وأن نقيم تأثيراتها المحتملة بعناية. على الرغم من أن البرنامج الوسيط TrimStrings يعد أداة مفيدة في معظم الحالات، إلا أنه يمكن أن يسبب مشكلات في مثل هذه السيناريوهات. ولحسن الحظ، تتيح لنا الحلول المرنة مثل TrimStrings::skipWhen تجنب مثل هذه المشكلات.

بيان الافراج تتم إعادة طباعة هذه المقالة على: https://dev.to/yidemir/how-trimstrings-can-become-a-problem-for-you-in-laravel-o4k؟1 إذا كان هناك أي انتهاك ، فيرجى الاتصال بـ [email protected] لحذفها.
أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3