-
Notifications
You must be signed in to change notification settings - Fork 3.5k
New issue
Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? # to your account
Add check for Sec-WebSocket-Key header #752
Add check for Sec-WebSocket-Key header #752
Conversation
Do popular libraries for other programming languages reject invalid keys? I don't want this package to the only library that rejects invalid keys. Assuming that it's common practice to reject invalid keys, please move the logic to new function It's OK to return a single error message for invalid keys. |
c0eac79
to
4a6464d
Compare
@garyburd https://github.com/websockets/ws/blob/5edf1f4a1b1750109c1bb56eff7ad78902eee7dc/lib/websocket-server.js#L18 |
LGTM. The nodejs library provides strong evidence that the check is OK, but I want check more libraries before accepting the PR. One cause for concern is that the Autobahn|Testsuite does not test invalid keys. |
4a6464d
to
187c686
Compare
@garyburd |
There is a maximum limit of the incoming data per the base64 limit. You should add an error from the upgrader if the size is exceeded for two reasons:
|
The base64 alphabet has a limit per byte with regards to representation size. |
[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/gorilla/websocket](https://github.com/gorilla/websocket) | require | patch | `v1.5.0` -> `v1.5.1` | --- ### Release Notes <details> <summary>gorilla/websocket (github.com/gorilla/websocket)</summary> ### [`v1.5.1`](https://github.com/gorilla/websocket/releases/tag/v1.5.1) [Compare Source](https://github.com/gorilla/websocket/compare/v1.5.0...v1.5.1) #### What's Changed - Add check for Sec-WebSocket-Key header by [@​hirasawayuki](https://github.com/hirasawayuki) in [https://github.com/gorilla/websocket/pull/752](https://github.com/gorilla/websocket/pull/752) - Changed the method name UnderlyingConn to NetConn by [@​JWSong](https://github.com/JWSong) in [https://github.com/gorilla/websocket/pull/773](https://github.com/gorilla/websocket/pull/773) - remove all versions < 1.16 and add 1.18 by [@​ChannyClaus](https://github.com/ChannyClaus) in [https://github.com/gorilla/websocket/pull/793](https://github.com/gorilla/websocket/pull/793) - Check for and report bad protocol in TLSClientConfig.NextProtos by [@​ChannyClaus](https://github.com/ChannyClaus) in [https://github.com/gorilla/websocket/pull/788](https://github.com/gorilla/websocket/pull/788) - check err before GotConn for trace by [@​junnplus](https://github.com/junnplus) in [https://github.com/gorilla/websocket/pull/798](https://github.com/gorilla/websocket/pull/798) - Update README.md by [@​coreydaley](https://github.com/coreydaley) in [https://github.com/gorilla/websocket/pull/839](https://github.com/gorilla/websocket/pull/839) - Correct way to save memory using write buffer pool and freeing net.http default buffers by [@​FMLS](https://github.com/FMLS) in [https://github.com/gorilla/websocket/pull/761](https://github.com/gorilla/websocket/pull/761) - Update go version & add verification/testing tools by [@​coreydaley](https://github.com/coreydaley) in [https://github.com/gorilla/websocket/pull/840](https://github.com/gorilla/websocket/pull/840) - update golang.org/x/net by [@​coreydaley](https://github.com/coreydaley) in [https://github.com/gorilla/websocket/pull/856](https://github.com/gorilla/websocket/pull/856) - update GitHub workflows by [@​coreydaley](https://github.com/coreydaley) in [https://github.com/gorilla/websocket/pull/857](https://github.com/gorilla/websocket/pull/857) #### New Contributors - [@​hirasawayuki](https://github.com/hirasawayuki) made their first contribution in [https://github.com/gorilla/websocket/pull/752](https://github.com/gorilla/websocket/pull/752) - [@​JWSong](https://github.com/JWSong) made their first contribution in [https://github.com/gorilla/websocket/pull/773](https://github.com/gorilla/websocket/pull/773) - [@​ChannyClaus](https://github.com/ChannyClaus) made their first contribution in [https://github.com/gorilla/websocket/pull/793](https://github.com/gorilla/websocket/pull/793) - [@​junnplus](https://github.com/junnplus) made their first contribution in [https://github.com/gorilla/websocket/pull/798](https://github.com/gorilla/websocket/pull/798) - [@​coreydaley](https://github.com/coreydaley) made their first contribution in [https://github.com/gorilla/websocket/pull/839](https://github.com/gorilla/websocket/pull/839) - [@​FMLS](https://github.com/FMLS) made their first contribution in [https://github.com/gorilla/websocket/pull/761](https://github.com/gorilla/websocket/pull/761) **Full Changelog**: gorilla/websocket@v1.5.0...v1.5.1 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 6am on Monday" in timezone Europe/Paris, 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/cozy/cozy-stack). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4zMS41IiwidXBkYXRlZEluVmVyIjoiMzcuMzEuNSIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->
This MR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/gorilla/websocket](https://github.com/gorilla/websocket) | require | patch | `v1.5.0` -> `v1.5.1` | --- ### Release Notes <details> <summary>gorilla/websocket (github.com/gorilla/websocket)</summary> ### [`v1.5.1`](https://github.com/gorilla/websocket/releases/tag/v1.5.1) [Compare Source](gorilla/websocket@v1.5.0...v1.5.1) #### What's Changed - Add check for Sec-WebSocket-Key header by [@​hirasawayuki](https://github.com/hirasawayuki) in gorilla/websocket#752 - Changed the method name UnderlyingConn to NetConn by [@​JWSong](https://github.com/JWSong) in gorilla/websocket#773 - remove all versions < 1.16 and add 1.18 by [@​ChannyClaus](https://github.com/ChannyClaus) in gorilla/websocket#793 - Check for and report bad protocol in TLSClientConfig.NextProtos by [@​ChannyClaus](https://github.com/ChannyClaus) in gorilla/websocket#788 - check err before GotConn for trace by [@​junnplus](https://github.com/junnplus) in gorilla/websocket#798 - Update README.md by [@​coreydaley](https://github.com/coreydaley) in gorilla/websocket#839 - Correct way to save memory using write buffer pool and freeing net.http default buffers by [@​FMLS](https://github.com/FMLS) in gorilla/websocket#761 - Update go version & add verification/testing tools by [@​coreydaley](https://github.com/coreydaley) in gorilla/websocket#840 - update golang.org/x/net by [@​coreydaley](https://github.com/coreydaley) in gorilla/websocket#856 - update GitHub workflows by [@​coreydaley](https://github.com/coreydaley) in gorilla/websocket#857 #### New Contributors - [@​hirasawayuki](https://github.com/hirasawayuki) made their first contribution in gorilla/websocket#752 - [@​JWSong](https://github.com/JWSong) made their first contribution in gorilla/websocket#773 - [@​ChannyClaus](https://github.com/ChannyClaus) made their first contribution in gorilla/websocket#793 - [@​junnplus](https://github.com/junnplus) made their first contribution in gorilla/websocket#798 - [@​coreydaley](https://github.com/coreydaley) made their first contribution in gorilla/websocket#839 - [@​FMLS](https://github.com/FMLS) made their first contribution in gorilla/websocket#761 **Full Changelog**: gorilla/websocket@v1.5.0...v1.5.1 </details> --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNy4yODYuMSIsInVwZGF0ZWRJblZlciI6IjM3LjI4Ni4xIiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0=--> See merge request alpine/infra/build-server-status!9
Fixes issue: #617
Added the following two fixes
RFC6455 states the following: