Laravel の TrimStrings ミドルウェアが問題を引き起こす仕組み

WBOY
リリース: 2024-08-19 20:35:03
オリジナル
794 人が閲覧しました

How Laravel

Laravel は PHP の世界で人気のフレームワークであり、開発者に作業を簡素化する優れたツールを提供します。ただし、これらの利便性が予期せぬ問題を引き起こす場合があります。この投稿では、Laravel のTrimStringsミドルウェアがどのように問題を引き起こす可能性があるか、そしてその解決方法について説明します。

TrimStrings ミドルウェアとは何ですか?またその機能は何ですか?

TrimStrings

ミドルウェアは、フォーム入力などの受信リクエスト データから空白を自動的にトリミングするために Laravel アプリケーションで使用されます。これは、ユーザーが入力フィールドの先頭または末尾に誤ってスペースを入れてしまった場合に特に便利です。たとえば、ユーザーがフォームで電子メール アドレスの前後にスペースを入れて「 user@example.com 」と入力すると、TrimStringsミドルウェアはこれらのスペースをトリミングして、「user@example.com」のみが処理されるようにします。この機能は、不要な空白によって引き起こされるエラーを防ぎ、よりクリーンなデータを処理するのに役立ちます。ただし、いつものように、特定の特殊なケースでは、このデフォルトの動作が予期せぬ結果を招く可能性があります。

どうしたの?

ブラジルを拠点とする決済プロバイダーと統合していたプロジェクトでは、コールバック システムを通じて支払い結果を取得して検証する必要がありました。決済プロバイダーは、POST リクエストを介してトランザクション結果を当社のサーバーに送信し、当社は

署名/ハッシュ検証

を実行することでリクエストを検証します。この検証プロセスは単純なロジックに従います:

プロバイダーから送信されたデータを受け取ります。

    すべてのデータは単一の文字列に連結されます。
  1. この文字列は、
  2. SHA256
  3. アルゴリズムと、決済プロバイダーから提供される
  4. 秘密鍵を使用してハッシュ化されます。結果のハッシュは、プロバイダーによって送信されたハッシュと比較されます。それらが一致する場合、リクエストは受け入れられます。それ以外の場合は拒否されます。
  5. 問題をどのように特定したか?
当初、一部の有効なリクエストが拒否される理由を理解するのは困難でした。ただし、Nginx ログを検査した結果、受信リクエストの

full_name

パラメータの末尾にスペースが残っていることがわかりました。それにもかかわらず、私たちのサーバーではこれらのスペースがトリミングされていたため、ハッシュ検証が失敗しました。そのとき、TrimStrings ミドルウェアがこの問題の原因であることがわかりました。

解決策は何ですか?

このような問題を回避するには、特定のルートまたはリクエストに対して

TrimStrings

ミドルウェアを無効にする必要があります。 Laravel 8 では、この状況に合わせたソリューションを提供する

TrimStrings::skipWhenメソッドが導入されました。以下は、プロバイダーを使用してこのソリューションを適用する方法の例です:リーリー

このコード スニペットは、特定のルートの TrimStrings ミドルウェアを無効にします。この場合、api/v1/integrations/foo-provider/callback ルートからのリクエストに対してトリミングは行われず、ハッシュ検証プロセスがスムーズに機能することが保証されます。


結論

Laravel のデフォルト機能は通常、作業を簡単にしますが、特定のシナリオでは、予期しない結果につながる可能性があります。したがって、使用するツールがどのように動作するかを理解し、その潜在的な影響を慎重に評価することが重要です。

TrimStrings

ミドルウェアはほとんどの場合に便利なツールですが、このようなシナリオでは問題が発生する可能性があります。幸いなことに、

TrimStrings::skipWhen

のような柔軟なソリューションを使用すると、そのような問題を回避できます。

以上がLaravel の TrimStrings ミドルウェアが問題を引き起こす仕組みの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:dev.to
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!