Как промежуточное ПО TrimStrings в Laravel может вызывать проблемы
Что такое TrimStrings Middleware и для чего оно нужно?
TrimStrings — это middleware в Laravel, которое автоматически удаляет пробелы в начале и в конце строк данных, поступающих в запросах. Например, если пользователь вводит в форму " user@example.com " с пробелами, middleware уберёт эти пробелы и передаст чистую строку «user@example.com». Это помогает избежать ошибок, вызванных лишними пробелами.
Что произошло?
При интеграции с бразильским платёжным провайдером возникла необходимость валидации данных о транзакциях, поступающих на сервер через POST-запрос. Для проверки подлинности данных выполняется хэширование строки с использованием алгоритма SHA256 и секретного ключа. Однако в процессе проверки некоторые корректные запросы отклонялись.
Анализ логов Nginx показал, что в параметре full_name от провайдера сохранялись конечные пробелы, которые на сервере обрезались TrimStrings middleware. Это приводило к несоответствию хэшей и отклонению запросов.
Как решить проблему?
Для предотвращения подобных ситуаций нужно отключить TrimStrings middleware для определённых маршрутов. В Laravel 8 для этого появился метод TrimStrings::skipWhen.
Post #4737
2.83K