You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Adds defense-in-depth validation for push notification navigation payloads.
This change introduces notification payload schema validation with Zod together with a notification screen allowlist to prevent untrusted notification payloads from triggering unintended navigation.
Changes
Added NOTIFICATION_SCREEN_ALLOWLIST in src/config/security.ts
Added screenName to NotificationData
Added Zod validation for notification payloads before navigation
Blocked navigation for non-allowlisted screens
Logged rejected notification payloads to Sentry as warnings
Preserved existing notification routing behavior (screenName acts only as a security gate)
Added unit tests covering:
allowlisted screen
blocked screen
malformed payload
missing screenName
payload validation
Notes
This implementation intentionally treats screenName as a validation gate rather than a navigation override. Existing notification routing remains unchanged while preventing navigation initiated from untrusted notification payloads.
Existing notification routing behavior is preserved.
The optional screenName field is treated as a security validation gate, not as a navigation override. When present, it must pass both Zod schema validation and the notification screen allowlist before the notification continues through the existing notification-type routing logic. This prevents untrusted notification payloads from influencing navigation while preserving the application's established behavior.
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
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.
Closes #664
Summary
Adds defense-in-depth validation for push notification navigation payloads.
This change introduces notification payload schema validation with Zod together with a notification screen allowlist to prevent untrusted notification payloads from triggering unintended navigation.
Changes
Added
NOTIFICATION_SCREEN_ALLOWLISTinsrc/config/security.tsAdded
screenNametoNotificationDataAdded Zod validation for notification payloads before navigation
Blocked navigation for non-allowlisted screens
Logged rejected notification payloads to Sentry as warnings
Preserved existing notification routing behavior (screenName acts only as a security gate)
Added unit tests covering:
Notes
This implementation intentionally treats
screenNameas a validation gate rather than a navigation override. Existing notification routing remains unchanged while preventing navigation initiated from untrusted notification payloads.