Password hashing with Argon2 and bcrypt migration paths

Passwords should never be encrypted for later recovery. I store slow one-way hashes, tune work factors for current hardware, and maintain a rehash path when users log in with older credentials. Argon2id is my first choice for new systems, while bcrypt

Content Security Policy header design for modern web apps

CSP design is about reducing script execution freedom without breaking the app. I prefer nonces over unsafe-inline, keep the allowed source list tight, and roll policies out in report-only mode first. That gives teams a workable path from permissive f

Suricata IDS rule authoring for suspicious lateral movement

Detection engineering works best when the rule reflects a behavior you can explain, not just a string that looked scary once. I use Suricata for network patterns that are specific enough to matter operationally. Rule quality is a maintenance problem a

ModSecurity WAF rules for common web attack patterns

A WAF is not a license to ignore secure coding, but it can still buy useful time and visibility. I tune rules for known attack classes and watch false positives aggressively during rollout. Managed poorly, a WAF becomes operational pain; managed well,

Signed release artifacts with cosign for software supply chain trust

Artifact signing gives downstream systems something concrete to verify before deployment. I use cosign because it keeps container and provenance signing practical in CI. Supply chain controls only matter if verification is automated where release deci

Git secret scanning with pre commit hooks

I want secret leakage blocked before it reaches a remote repository. Local pre-commit hooks are not enough by themselves, but they cut down accidental exposure and teach the team what not to commit. The server-side or CI scan then becomes the final ga

TLS certificate automation with certbot and strict renewal checks

Certificate expiry outages are avoidable with boring automation and good alerting. I use automatic renewal, post-renew validation hooks, and external checks that warn well before expiry. TLS is not finished once the first certificate works.

Security review checklist for production readiness of new services

I use a review checklist to make sure basic controls are present before a service ships: auth, logging, secrets, dependency scanning, backups, and least privilege. Checklists do not replace expertise, but they prevent avoidable omissions. The best one

tcpdump filters for fast packet capture during investigations

Packet capture is most useful when it is scoped enough to answer a question quickly. I capture by host, port, subnet, or flag pattern rather than grabbing everything and hoping to sort it out later. Storage, privacy, and time all argue for precision.

Email security baseline with SPF DKIM and DMARC records

Email remains a major impersonation surface, so I want domain alignment controls in place even for engineering-led products. SPF alone is not enough, and DMARC without a rollout plan creates confusion. Monitoring mode first, then enforcement, is usual

Threat hunting query ideas mapped to MITRE ATT and CK patterns

I like threat hunting queries that map to observable attacker behavior rather than vague fear. MITRE ATT&CK gives a useful shared language, but the hunt still needs concrete fields, sources, and hypotheses. The best hunt queries are specific enoug

Train test split and stratified cross validation done properly

Evaluation goes wrong when data splitting is treated like boilerplate. I stratify imbalanced targets, guard time order when necessary, and make sure preprocessing lives inside cross-validation. This is the difference between a model that looks good in