Skip to content
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

fix: fix cookie parsing to allow invalid uri encoding #4915

Merged
merged 2 commits into from
Aug 21, 2023

Conversation

jessezhang91
Copy link
Contributor

@jessezhang91 jessezhang91 commented Aug 8, 2023

Overview

Cookies with invalid URI encoding throws a URIError: URI malformed error and bails out of processing.

Cookie values do not need to be URL encoded. Looking at the cookie library used by cookie-parser and many others, they do a tryDecode and return the raw value on failure to decode.

What is it?

  • Feature / enhancement
  • Bug
  • Docs / tests / types / typos

Description

I updated the cookie parsing function to mimic this tryDecode functionality and added a test to validate that.

Use cases and why

A cookie header with foo=%bar should have a cookie with key foo have value %bar and the rest of the app should continue to function. Currently, it gets a URIError: URI malformed and bails with a server error.

Checklist:

  • My code follows the developer guidelines of this project
  • I have performed a self-review of my own code
  • I have made corresponding changes to the documentation
  • Added new tests to cover the fix / functionality

@netlify
Copy link

netlify bot commented Aug 8, 2023

Deploy Preview for qwik-insights failed.

Name Link
🔨 Latest commit 2578d22
🔍 Latest deploy log https://app.netlify.com/sites/qwik-insights/deploys/64e39f411620a400081a42bf

@stackblitz
Copy link

stackblitz bot commented Aug 8, 2023

Review PR in StackBlitz Codeflow Run & review this pull request in StackBlitz Codeflow.

@zanettin zanettin added the STATUS-2: PR waiting for review This PR is waiting for review and approval before merge label Aug 18, 2023
@jessezhang91
Copy link
Contributor Author

Bump on this PR. We're running into production issues with this due to what looks like ad tracking cookies. It's not that high volume but it's not insignificant.

@@ -52,15 +52,26 @@ const createSetCookieValue = (cookieName: string, cookieValue: string, options:
return c.join('; ');
};

function tryDecodeUriComponent(str: string) {
if (str.indexOf('%') === -1) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think this check is not-needed. If not %, then decodeURIComponent just returns a normal string.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Yeah, agreed. I added that only because the cookie library had something like that (probably for optimization?).

@mhevery mhevery enabled auto-merge (squash) August 21, 2023 17:31
@mhevery mhevery merged commit 288ce73 into QwikDev:main Aug 21, 2023
19 of 24 checks passed
kodiakhq bot pushed a commit to ascorbic/unpic-img that referenced this pull request Aug 27, 2023
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Change | Age | Adoption | Passing | Confidence |
|---|---|---|---|---|---|
| [@builder.io/qwik](https://qwik.builder.io/) ([source](https://togithub.com/BuilderIO/qwik)) | [`1.2.7` -> `1.2.10`](https://renovatebot.com/diffs/npm/@builder.io%2fqwik/1.2.7/1.2.10) | [![age](https://developer.mend.io/api/mc/badges/age/npm/@builder.io%2fqwik/1.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![adoption](https://developer.mend.io/api/mc/badges/adoption/npm/@builder.io%2fqwik/1.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![passing](https://developer.mend.io/api/mc/badges/compatibility/npm/@builder.io%2fqwik/1.2.7/1.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/@builder.io%2fqwik/1.2.7/1.2.10?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>BuilderIO/qwik (@&#8203;builder.io/qwik)</summary>

### [`v1.2.10`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.2.10)

[Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.2.9...v1.2.10)

##### What's Changed

-   fix: docs/cookbook/index.mdx link to portal page by [@&#8203;Craiqser](https://togithub.com/Craiqser) in [QwikDev/qwik#5022
-   qwik-labs: fix prettier estree error by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#5027
-   insights: add existsSync check by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#5026
-   chore(insights): correct DB migration script by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5024
-   fix(core): Report errors to browser global error handler by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5029
-   style(pnpm-lock.yaml): synchronize lockfile version with version of pnpm in use by [@&#8203;jensmeindertsma](https://togithub.com/jensmeindertsma) in [QwikDev/qwik#4905
-   fix(starter): missing key attrib on `routerHead` component on `1.2.9` by [@&#8203;zanettin](https://togithub.com/zanettin) in [QwikDev/qwik#5025
-   1.2.10 by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5035

**Full Changelog**: QwikDev/qwik@v1.2.9...v1.2.10

### [`v1.2.9`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.2.9)

[Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.2.8...v1.2.9)

#### What's Changed

-   docs: Vercel environment variables by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#4993
-   refactor(create-qwik): add yargs in create-qwik for better DX by [@&#8203;MrWaip](https://togithub.com/MrWaip) in [QwikDev/qwik#4932
-   feat(adapter): firebase adapter by [@&#8203;leifermendez](https://togithub.com/leifermendez) in [QwikDev/qwik#4778
-   Pr chore by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4994
-   fix: Link component `reload` functionality by [@&#8203;zanettin](https://togithub.com/zanettin) in [QwikDev/qwik#4917
-   docs(qwikcity): html attributes docs page by [@&#8203;bab2683](https://togithub.com/bab2683) in [QwikDev/qwik#4961
-   feat(qwik-city): add a way to get server-side env vars from `onStaticGenerate` by [@&#8203;Kocal](https://togithub.com/Kocal) in [QwikDev/qwik#4912
-   fix(eslint): allow eslint to accept FunctionComponent inside lexical scopes by [@&#8203;nynevi](https://togithub.com/nynevi) in [QwikDev/qwik#4900
-   refactor(cloudflare-pages): allow PlatformCloudflarePages.env to be undefined by [@&#8203;bangonkali](https://togithub.com/bangonkali) in [QwikDev/qwik#4941
-   docs: dynamic alt image by [@&#8203;the-r3aper7](https://togithub.com/the-r3aper7) in [QwikDev/qwik#4999
-   docs: add responsive image recipe by [@&#8203;fabiobiondi](https://togithub.com/fabiobiondi) in [QwikDev/qwik#5002
-   docs: community project update image url by [@&#8203;the-r3aper7](https://togithub.com/the-r3aper7) in [QwikDev/qwik#5000
-   docs: enhance image documentation by [@&#8203;fabiobiondi](https://togithub.com/fabiobiondi) in [QwikDev/qwik#5005
-   added qwik-meet in showcase by [@&#8203;harshmangalam](https://togithub.com/harshmangalam) in [QwikDev/qwik#5007
-   docs: Update index.mdx by [@&#8203;the-r3aper7](https://togithub.com/the-r3aper7) in [QwikDev/qwik#5010
-   docs: update side bar by [@&#8203;the-r3aper7](https://togithub.com/the-r3aper7) in [QwikDev/qwik#5009
-   fix(qwik-city): enable matching route and pathname with an optional t… by [@&#8203;pleclech](https://togithub.com/pleclech) in [QwikDev/qwik#5004
-   docs(image): add details by [@&#8203;fabiobiondi](https://togithub.com/fabiobiondi) in [QwikDev/qwik#5014
-   insights(feat): qwikInsights Vite Plugin + save symbol details by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#5011
-   chore(insights): Remove deprecated InferModel by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5018
-   fix: add  options to qwik vite plugin by [@&#8203;jessezhang91](https://togithub.com/jessezhang91) in [QwikDev/qwik#4983
-   1.2.9 by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#5021

#### New Contributors

-   [@&#8203;MrWaip](https://togithub.com/MrWaip) made their first contribution in [QwikDev/qwik#4932
-   [@&#8203;bab2683](https://togithub.com/bab2683) made their first contribution in [QwikDev/qwik#4961
-   [@&#8203;Kocal](https://togithub.com/Kocal) made their first contribution in [QwikDev/qwik#4912
-   [@&#8203;nynevi](https://togithub.com/nynevi) made their first contribution in [QwikDev/qwik#4900
-   [@&#8203;bangonkali](https://togithub.com/bangonkali) made their first contribution in [QwikDev/qwik#4941
-   [@&#8203;pleclech](https://togithub.com/pleclech) made their first contribution in [QwikDev/qwik#5004

**Full Changelog**: QwikDev/qwik@v1.2.8...v1.2.9

### [`v1.2.8`](https://togithub.com/BuilderIO/qwik/releases/tag/v1.2.8)

[Compare Source](https://togithub.com/BuilderIO/qwik/compare/v1.2.7...v1.2.8)

##### What's Changed

-   docs: cleanup by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4945
-   chore: update issue templates by [@&#8203;shairez](https://togithub.com/shairez) in [QwikDev/qwik#4962
-   docs: correctly generate edit URLs for github by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4963
-   Typo in FAQ by [@&#8203;ThatJSGuy](https://togithub.com/ThatJSGuy) in [QwikDev/qwik#4953
-   feat(qwik-city): Show current route in container by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4954
-   fix(docs): add overview link by [@&#8203;fabiobiondi](https://togithub.com/fabiobiondi) in [QwikDev/qwik#4958
-   Towards personalized SSG by [@&#8203;eric-burel](https://togithub.com/eric-burel) in [QwikDev/qwik#4951
-   fix(qwik-auth): remove qaction param from defaultCallbackUrl by [@&#8203;ulic75](https://togithub.com/ulic75) in [QwikDev/qwik#4936
-   fix(qwik-city): cleanup matchRouteRequest by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#4967
-   fix(auth): Cookies get updated if session returns Updated Cookies by [@&#8203;aliyss](https://togithub.com/aliyss) in [QwikDev/qwik#4960
-   cli(library): fix release script by [@&#8203;fabiobiondi](https://togithub.com/fabiobiondi) in [QwikDev/qwik#4957
-   docs: Improved media, fixed height thumbnails by [@&#8203;the-r3aper7](https://togithub.com/the-r3aper7) in [QwikDev/qwik#4970
-   feat(qwik-city): Adding Script Tag to Head Tag via DocumentHead by [@&#8203;Harkunwar](https://togithub.com/Harkunwar) in [QwikDev/qwik#3230
-   fix: fix cookie parsing to allow invalid uri encoding by [@&#8203;jessezhang91](https://togithub.com/jessezhang91) in [QwikDev/qwik#4915
-   fix(qwikcity): respect X-Forwarded-Host header by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4982
-   chore(docs): fix broken cloudflare build by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4984
-   feat(insights): manage routes and timeline metrics by [@&#8203;gioboa](https://togithub.com/gioboa) in [QwikDev/qwik#4971
-   feat: complex form data by [@&#8203;ulic75](https://togithub.com/ulic75) in [QwikDev/qwik#4634
-   docs(portals): update the portal cookbook example by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4968
-   chore(insights): fix build by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4986
-   fix: only show qwik eslint errors in dev mode by [@&#8203;jessezhang91](https://togithub.com/jessezhang91) in [QwikDev/qwik#4985
-   docs: some progress on the update of the react-cheat-sheet section re… by [@&#8203;nsdonato](https://togithub.com/nsdonato) in [QwikDev/qwik#4976
-   chore(docs): Remove home-page from SSR to improve TTFB metric by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4988
-   Pr no ssr by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4989
-   cli: Add new Markdown route command by [@&#8203;brandonpittman](https://togithub.com/brandonpittman) in [QwikDev/qwik#4955
-   docs: update Prisma limitations by [@&#8203;ruheni](https://togithub.com/ruheni) in [QwikDev/qwik#4241
-   1.2.8 by [@&#8203;mhevery](https://togithub.com/mhevery) in [QwikDev/qwik#4992

##### New Contributors

-   [@&#8203;ThatJSGuy](https://togithub.com/ThatJSGuy) made their first contribution in [QwikDev/qwik#4953
-   [@&#8203;fabiobiondi](https://togithub.com/fabiobiondi) made their first contribution in [QwikDev/qwik#4958
-   [@&#8203;eric-burel](https://togithub.com/eric-burel) made their first contribution in [QwikDev/qwik#4951
-   [@&#8203;aliyss](https://togithub.com/aliyss) made their first contribution in [QwikDev/qwik#4960
-   [@&#8203;brandonpittman](https://togithub.com/brandonpittman) made their first contribution in [QwikDev/qwik#4955
-   [@&#8203;ruheni](https://togithub.com/ruheni) made their first contribution in [QwikDev/qwik#4241

**Full Changelog**: QwikDev/qwik@v1.2.7...v1.2.8

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "after 9pm on sunday" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 **Ignore**: Close this PR and you won't be reminded about this update again.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/ascorbic/unpic-img).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi42NC44IiwidXBkYXRlZEluVmVyIjoiMzYuNjQuOCIsInRhcmdldEJyYW5jaCI6Im1haW4ifQ==-->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
COMP: qwik-city STATUS-2: PR waiting for review This PR is waiting for review and approval before merge
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

3 participants