-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
Description
Description
Implement input validation and sanitization across all authentication endpoints to prevent injection attacks and ensure data integrity.
Tasks
- Use Ecto changesets for validation
- Validate all email formats
- Sanitize user inputs
- Validate password complexity
- Check for SQL injection vulnerabilities (Ecto should handle)
- Prevent XSS in responses
- Validate request body structure
- Add CSRF protection for cookie-based auth (if applicable)
Validation Rules
- Valid email format
- Must contain @ symbol
- Domain must exist in university_domains
- Maximum length: 255 characters
Password
- Minimum 8 characters
- Maximum 128 characters
- Complexity requirements (from password security issue)
Device Info
- device_id: alphanumeric, max 255 chars
- device_type: enum (mobile, desktop, tablet)
- user_agent: sanitized string, max 500 chars
OTP Code
- Exactly 6 digits
- Numeric only
Implementation Example
def signup_changeset(attrs) do
%User{}
|> cast(attrs, [:email, :password])
|> validate_required([:email, :password])
|> validate_email()
|> validate_password()
|> validate_university_domain()
endSecurity Headers
Add to endpoint configuration:
X-Content-Type-Options: nosniffX-Frame-Options: DENYX-XSS-Protection: 1; mode=block
Definition of Done
- All inputs validated
- Sanitization implemented
- Security headers added
- Error messages don't leak info
- Tests covering validation
- Security review completed
Reactions are currently unavailable