Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
54 lines
2.1 KiB
Markdown
54 lines
2.1 KiB
Markdown
## Security
|
|
|
|
* Treat all external input as untrusted.
|
|
* Never expose secrets, credentials or tokens in UI code.
|
|
* Do not store secrets in configuration files committed to source control.
|
|
* Avoid leaking sensitive information through logs, dialogs or exception messages.
|
|
* Validate file paths and external resources.
|
|
* Do not execute external processes or files without explicit validation.
|
|
* Avoid insecure deserialization.
|
|
* Do not weaken TLS, authentication or certificate validation.
|
|
* Prefer secure defaults.
|
|
* Never disable security controls for convenience.
|
|
|
|
## File and Process Access
|
|
|
|
* Validate file paths before use.
|
|
* Avoid assuming files or directories exist.
|
|
* Handle permissions and locked files gracefully.
|
|
* Avoid arbitrary shell execution.
|
|
* Quote and validate process arguments safely.
|
|
* Do not concatenate untrusted input into shell commands.
|
|
* Avoid elevated privileges unless explicitly required.
|
|
* Clean up temporary files when appropriate.
|
|
|
|
## Error Handling
|
|
|
|
* Handle expected errors explicitly.
|
|
* Do not swallow exceptions.
|
|
* Preserve useful exception context.
|
|
* Avoid showing raw technical exceptions directly to end users.
|
|
* Log enough information for diagnosis without exposing sensitive data.
|
|
* Keep user-facing error messages clear and actionable.
|
|
* Avoid using exceptions for normal control flow.
|
|
* Ensure background exceptions are observed.
|
|
|
|
## Logging
|
|
|
|
* Use structured logging.
|
|
* Avoid excessive logging on the UI thread.
|
|
* Do not log every property change or binding update.
|
|
* Never log secrets, tokens, credentials or sensitive user data.
|
|
* Include relevant context for operational failures.
|
|
* Avoid logging the same exception repeatedly at multiple layers.
|
|
|
|
## Validation
|
|
|
|
* Validate user input at the appropriate boundary.
|
|
* Keep validation logic out of XAML when it becomes complex.
|
|
* Prefer reusable validation rules or ViewModel validation for non-trivial cases.
|
|
* Display validation errors consistently.
|
|
* Do not rely on UI validation as a security boundary.
|
|
* Validate again at backend or domain boundaries when required.
|
|
* Preserve user input on recoverable errors.
|