Enhance login security with CSRF protection and host validation#2
Merged
Conversation
- Generate a cryptographically random state value (via GenerateVerifier) and include it in the Slack authorization URL (RFC 6749 §10.12 / RFC 9700) - Validate state in /callback using subtle.ConstantTimeCompare to prevent timing side-channels - Reject requests with a mismatched or missing state, sending the error through errCh so the login flow surfaces it instead of hanging - Validate Host header against 127.0.0.1/localhost as a DNS-rebinding defence layer - Reject callbacks that carry an empty code so the token exchange is never attempted with a blank value https://claude.ai/code/session_01GwwBXV9g43FLpmKzgobVGE
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
This PR improves the security of the login flow by adding CSRF protection via state parameter validation and implementing host validation for the OAuth callback handler.
Key Changes
127.0.0.1orlocalhostto prevent open redirect vulnerabilitiesImplementation Details
crypto/subtle.ConstantTimeCompare()for timing-attack-resistant state comparison