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

safeweb: init #11467

Merged
merged 1 commit into from
Mar 27, 2024
Merged

safeweb: init #11467

merged 1 commit into from
Mar 27, 2024

Conversation

patrickod
Copy link
Contributor

@patrickod patrickod commented Mar 19, 2024

Updates https://github.com/tailscale/corp/issues/8027

Implement a first pass of "safeweb" per the "Secure Internal Web Applications by Default" eng doc.

Safeweb is a wrapper around http.Server & tsnet that encodes some
application security defaults.

Safeweb asks developers to split their HTTP routes into two
http.ServeMuxs for serving browser and API-facing endpoints
repsectively. It then wraps these HTTP routes with the
context-appropriate security controls.

safeweb.Server#Serve will serve the HTTP muxes over the provided
listener. Caller are responsible for creating and tearing down their
application's listeners. Applications being served over HTTPS that wish
to implement HTTP redirects can use the Server#HTTPRedirect handler to
do so.

safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Show resolved Hide resolved
safeweb/http.go Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
@patrickod patrickod force-pushed the patrickod/safeweb branch 2 times, most recently from b4164ce to 82fb019 Compare March 21, 2024 19:59
@patrickod patrickod requested a review from awly March 21, 2024 19:59
@patrickod patrickod force-pushed the patrickod/safeweb branch 2 times, most recently from f1f050e to c6b6a2a Compare March 21, 2024 20:20
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
@patrickod patrickod force-pushed the patrickod/safeweb branch 4 times, most recently from 142e052 to 16dcb34 Compare March 21, 2024 22:27
@patrickod patrickod marked this pull request as ready for review March 21, 2024 22:56
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
Copy link
Contributor

@noncombatant noncombatant left a comment

Choose a reason for hiding this comment

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

(Possibly more to come later; just some 1st thoughts)

safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
Copy link
Member

@creachadair creachadair left a comment

Choose a reason for hiding this comment

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

I made a bunch of suggestions, mostly related to the docs, all of which you should feel free to disagree with.

safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Show resolved Hide resolved
safeweb/http_test.go Outdated Show resolved Hide resolved
safeweb/http_test.go Outdated Show resolved Hide resolved
safeweb/http_test.go Outdated Show resolved Hide resolved
safeweb/http_test.go Outdated Show resolved Hide resolved
@patrickod patrickod force-pushed the patrickod/safeweb branch 2 times, most recently from 2d00ac9 to 3981406 Compare March 26, 2024 22:04
safeweb/http.go Outdated Show resolved Hide resolved
safeweb/http.go Show resolved Hide resolved
safeweb/http.go Outdated Show resolved Hide resolved
Updates tailscale/corp#8027

Safeweb is a wrapper around http.Server & tsnet that encodes some
application security defaults.

Safeweb asks developers to split their HTTP routes into two
http.ServeMuxs for serving browser and API-facing endpoints
repsectively. It then wraps these HTTP routes with the
context-appropriate security controls.

safeweb.Server#Serve will serve the HTTP muxes over the provided
listener. Caller are responsible for creating and tearing down their
application's listeners. Applications being served over HTTPS that wish
to implement HTTP redirects can use the Server#HTTPRedirect handler to
do so.

Signed-off-by: Patrick O'Doherty <patrick@tailscale.com>
@patrickod patrickod merged commit 8f27520 into main Mar 27, 2024
46 checks passed
@patrickod patrickod deleted the patrickod/safeweb branch March 27, 2024 17:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

4 participants