-
Notifications
You must be signed in to change notification settings - Fork 1.1k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Merging to release-4-lts: [TT-9327] Decoding the URL request first, before handling any additional logic (#5345) #5736
Conversation
Apply Sweep Rules to your PR?
|
API tests result: failure 🚫 |
API tests result: success ✅ |
bf29a21
to
ce9e103
Compare
API tests result: success ✅ |
API tests result: success ✅ Co-authored-by: Tit Petric tit@tyk.io |
…nal logic (#5345) <!-- Provide a general summary of your changes in the Title above --> this path works: /payment-intents but this path doesn't: /payment%2Dintents Encoded URLs aren't being rewritten when URL rewrite is applied. One edge case scenario that could break backwards compatibility (as described by @buger ), is that users can rely on escaped characters, and try to match them from the the url rewrite rules. In order to accomodate that, we are running url rewrite middleware twice: - once on the raw path - if transformations are failing and the url contains encoded characters, then we run it second time, with decoded URL <!-- Describe your changes in detail --> <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> <!-- Why is this change required? What problem does it solve? --> Unit test and manually <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [√ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why (cherry picked from commit 4346303)
ce9e103
to
d17ef07
Compare
API tests result: success ✅ |
…efore handling any additional logic (#5345) (#5736) [TT-9327] Decoding the URL request first, before handling any additional logic (#5345) <!-- Provide a general summary of your changes in the Title above --> this path works: /payment-intents but this path doesn't: /payment%2Dintents Encoded URLs aren't being rewritten when URL rewrite is applied. One edge case scenario that could break backwards compatibility (as described by @buger ), is that users can rely on escaped characters, and try to match them from the the url rewrite rules. In order to accomodate that, we are running url rewrite middleware twice: - once on the raw path - if transformations are failing and the url contains encoded characters, then we run it second time, with decoded URL <!-- Describe your changes in detail --> ## Related Issue <!-- This project only accepts pull requests related to open issues. --> <!-- If suggesting a new feature or change, please discuss it in an issue first. --> <!-- If fixing a bug, there should be an issue describing it with steps to reproduce. --> <!-- OSS: Please link to the issue here. Tyk: please create/link the JIRA ticket. --> ## Motivation and Context <!-- Why is this change required? What problem does it solve? --> ## How This Has Been Tested Unit test and manually ## Screenshots (if appropriate) ## Types of changes <!-- What types of changes does your code introduce? Put an `x` in all the boxes that apply: --> - [√ ] Bug fix (non-breaking change which fixes an issue) - [ ] New feature (non-breaking change which adds functionality) - [ ] Breaking change (fix or feature that would cause existing functionality to change) - [ ] Refactoring or add test (improvements in base code or adds test coverage to functionality) ## Checklist <!-- Go over all the following points, and put an `x` in all the boxes that apply --> <!-- If there are no documentation updates required, mark the item as checked. --> <!-- Raise up any additional concerns not covered by the checklist. --> - [ ] I ensured that the documentation is up to date - [ ] I explained why this PR updates go.mod in detail with reasoning why it's required - [ ] I would like a code coverage CI quality gate exception and have explained why [TT-9327]: https://tyktech.atlassian.net/browse/TT-9327?atlOrigin=eyJpIjoiNWRkNTljNzYxNjVmNDY3MDlhMDU5Y2ZhYzA5YTRkZjUiLCJwIjoiZ2l0aHViLWNvbS1KU1cifQ --------- Co-authored-by: Laurentiu Ghiur <laurentiu.ghiur@gmail.com> Co-authored-by: Tit Petric <tit@tyk.io>
TT-9327 Decoding the URL request first, before handling any additional logic (#5345)
this path works: /payment-intents
but this path doesn't: /payment%2Dintents
Encoded URLs aren't being rewritten when URL rewrite is applied.
One edge case scenario that could break backwards compatibility (as
described by @buger ), is that users can rely on escaped characters, and
try to match them from the the url rewrite rules.
In order to accomodate that, we are running url rewrite middleware
twice:
characters, then we run it second time, with decoded URL
Related Issue
Motivation and Context
How This Has Been Tested
Unit test and manually
Screenshots (if appropriate)
Types of changes
functionality to change)
coverage to functionality)
Checklist
why it's required
explained why