«Если рабочий хочет хорошо выполнять свою работу, он должен сначала заточить свои инструменты» — Конфуций, «Аналитики Конфуция. Лу Лингун»
титульная страница > программирование > Как промежуточное ПО TrimStrings от Laravel может вызвать проблемы

Как промежуточное ПО TrimStrings от Laravel может вызвать проблемы

Опубликовано 8 ноября 2024 г.
Просматривать:757

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 Если есть какие-либо нарушения, пожалуйста, свяжитесь с Study_golang@163. .com, чтобы удалить его
Последний учебник Более>

Изучайте китайский

Отказ от ответственности: Все предоставленные ресурсы частично взяты из Интернета. В случае нарушения ваших авторских прав или других прав и интересов, пожалуйста, объясните подробные причины и предоставьте доказательства авторских прав или прав и интересов, а затем отправьте их по электронной почте: [email protected]. Мы сделаем это за вас как можно скорее.

Copyright© 2022 湘ICP备2022001581号-3