Brutalist Application Security
Focus on core, proven controls. No fluff. Like everything in a Security Brutalist approach, what follows is fundamental, functional, and requires adaptation to your specific context.
- Validate ALL input, strictly. Reject bad data outright. If it doesn't match the rules, it doesn't get in. Period.
- Authenticate strongly. Authorize directly in code. Least privilege, always. Trust nothing, verify everything, grant only what's absolutely necessary within the application itself.
- Encode ALL output. Prevent injection at the source. Every piece of user-provided data is treated as potentially hostile until proven otherwise through encoding.
- Handle errors cleanly, log verbosely (securely). Visibility is key. Fail close. Errors should inform without exposing secrets. Logs are the unvarnished truth of what's happening.
- Minimize dependencies. Audit ruthlessly. Patch constantly. Less code, fewer holes. Every external library is a potential vulnerability. Use the minimum required and keep them updated without fail.
- Automate basic security tests early. Raw feedback for devs. Catch the obvious flaws early and often, directly in the development pipeline.
- Deploy securely via code. Minimal manual config. Consistency enforced. Infrastructure and application deployment must be repeatable and defined, not a series of manual tweaks.
No magic boxes. Understand your defenses. Build solid foundations. Security isn't a product you buy; it's a fundamental way you build. End goal: What you see is what's enforced; what breaks doesn't collapse the system; and what remains is strong and recoverable.