<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Blog — George Mishurovsky: posts tagged web</title>
<link>https://mishurovsky.com/blog/?go=tags/web/</link>
<description>A blog by George Mishurovsky — a senior software engineer with a medical degree. Drawing from both engineering and scientific thinking, he explores software, architecture, design, psychology, and product thinking.</description>
<author></author>
<language>en</language>
<generator>Aegea 11.3 (v4134e)</generator>

<itunes:owner>
<itunes:name></itunes:name>
<itunes:email>george@mishurovsky.com</itunes:email>
</itunes:owner>
<itunes:subtitle>A blog by George Mishurovsky — a senior software engineer with a medical degree. Drawing from both engineering and scientific thinking, he explores software, architecture, design, psychology, and product thinking.</itunes:subtitle>
<itunes:image href="https://mishurovsky.com/blog/pictures/userpic/userpic-square@2x.jpg?1753619610" />
<itunes:explicit>no</itunes:explicit>

<item>
<title>A Security Checklist for Senior Engineers and Tech Leads</title>
<guid isPermaLink="false">12</guid>
<link>https://mishurovsky.com/blog/?go=all/security-topics-for-tech-leads-and-staff-engineers/</link>
<pubDate>Tue, 02 Sep 2025 13:16:47 +0200</pubDate>
<author></author>
<comments>https://mishurovsky.com/blog/?go=all/security-topics-for-tech-leads-and-staff-engineers/</comments>
<description>
&lt;p&gt;Couple of years ago, I told an interviewer I didn’t want to work on security problems because I found them boring. My mind has changed since then.&lt;/p&gt;
&lt;p&gt;Security requirements are genuine engineering constraints. They drive development of sophisticated solutions, and it &lt;i&gt;is&lt;/i&gt; interesting to work with them. The hard part, though, is knowing an exact list of critical security issues and approaches to them.&lt;/p&gt;
&lt;p&gt;That’s why I asked ChatGPT for such list – on a level a solid principal engineer should know. The response was quite reasonable, so I spent some time refining the list, and here is the result! I keep it as a reference for myself, and I hope you’ll find it useful, too.&lt;/p&gt;
&lt;h2&gt;Core Web App Security&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;API Security&lt;/b&gt;: REST/GraphQL hardening, input validation, over/under-fetching prevention, API keys, HMAC, request signing, certificate pinning, replay prevention.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Authentication &amp; Identity&lt;/b&gt;: password storage (bcrypt/argon2), MFA, OAuth2/OIDC, SAML, JWT best practices.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Authorization&lt;/b&gt;: RBAC, ABAC, least privilege, privilege escalation prevention.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CSRF Protection&lt;/b&gt;: tokens, SameSite cookies, double-submit cookie pattern.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Data Protection&lt;/b&gt;: encryption at rest (AES-256+), in transit (TLS 1.2+), key management.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Error Handling &amp; Logging&lt;/b&gt;: no sensitive data leaks, structured logging, correlation IDs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;File Uploads&lt;/b&gt;: validation, MIME checks, virus scanning, sandboxing.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Injection Attacks&lt;/b&gt;: SQLi, NoSQLi, LDAP, OS command injection, template injection.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Input Validation&lt;/b&gt;: sanitization, strict schema validation, whitelisting.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Output Encoding&lt;/b&gt;: escaping for HTML, JS, CSS, URLs to prevent XSS.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Rate Limiting &amp; DoS Protection&lt;/b&gt;: throttling, circuit breakers, caching.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Secrets Management&lt;/b&gt;: key rotation policies, vaults (e. g., HashiCorp Vault, AWS Secrets Manager).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Session Management&lt;/b&gt;: secure cookies, SameSite, HttpOnly, session fixation, token expiry/rotation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Browser &amp; Front-End Security&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Clickjacking Protection&lt;/b&gt;: X-Frame-Options, frame-ancestors.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;CSP (Content Security Policy)&lt;/b&gt;: nonces, strict-dynamic, avoiding unsafe-inline.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HTTP caching headers&lt;/b&gt;: Cache-Control, Vary, Pragma for sensitive data.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Subresource Integrity (SRI)&lt;/b&gt; for 3rd-party scripts.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Trusted Types&lt;/b&gt; to mitigate DOM-based XSS.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Web Storage Security&lt;/b&gt;: storing sensitive data outside of localStorage or sessionStorage.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Infrastructure &amp; Deployment&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;CI/CD Security&lt;/b&gt;: supply chain attacks, dependency scanning (SCA), signed builds.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Container Security&lt;/b&gt;: minimal images, runtime restrictions, scanning (Trivy, Clair).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;DNS Security&lt;/b&gt;: DNSSEC, avoiding cache poisoning.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;HTTPS Everywhere&lt;/b&gt;: HSTS, secure TLS configs, certificate rotation.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;IaC Security&lt;/b&gt;: secure Terraform and CloudFormation, policy-as-code (OPA).&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Reverse Proxies &amp; WAFs&lt;/b&gt;: e. g., Cloudflare, AWS WAF.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Secret and Key Management&lt;/b&gt;: choosing correct algorithms (AES-GCM, RSA vs ECC, SHA-2/3), key rotation policies, HSMs/KMS use.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Secrets in CI/CD&lt;/b&gt;: no hardcoded creds, encrypted variables.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Operational &amp; Organizational&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;Compliance &amp; Privacy&lt;/b&gt;: GDPR, HIPAA, SOC2, PCI-DSS basics.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Dependency Management&lt;/b&gt;: SCA, patching, SBOMs.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;External Attack Surface Discovery&lt;/b&gt;: domains, APIs, old endpoints.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Insider Threats&lt;/b&gt;: principle of least privilege, auditing.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Monitoring &amp; Incident Response&lt;/b&gt;: SIEM, anomaly detection, alerting.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Secure SDLC&lt;/b&gt;: threat modeling, STRIDE, abuse cases, security reviews.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Security Testing&lt;/b&gt;: static analysis (SAST), dynamic analysis (DAST), penetration testing.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Zero Trust Principles&lt;/b&gt;: network segmentation, identity-aware access.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Advanced / Modern Web Concerns&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;b&gt;AI/ML API Security&lt;/b&gt;: prompt injection, model data leaks.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;GraphQL-specific Risks&lt;/b&gt;: introspection, batching attacks.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Multi-Tenancy &amp; Data Isolation&lt;/b&gt;: proper tenant isolation in SaaS apps, preventing IDORs (Insecure Direct Object Reference)&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Serverless Security&lt;/b&gt;: least privilege IAM, cold-start secrets, event injection.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;SSRF &amp; Cloud Metadata Protection&lt;/b&gt;.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;Supply Chain Security&lt;/b&gt;: typosquatting, malicious packages.&lt;/li&gt;
&lt;li&gt;&lt;b&gt;WebSockets Security&lt;/b&gt;: auth, rate limiting, input validation.&lt;/li&gt;
&lt;/ul&gt;
</description>
</item>


</channel>
</rss>