@@ -237,6 +237,7 @@ <h1 style="font-size:clamp(40px,6vw,64px);font-weight:700;color:#fff;letter-spac
237237 < div class ="stat "> < div class ="num "> <1ms</ div > < div class ="label "> Routing Overhead</ div > </ div >
238238 < div class ="stat "> < div class ="num "> 8+</ div > < div class ="label "> LB Strategies</ div > </ div >
239239 < div class ="stat "> < div class ="num "> TLS 1.3</ div > < div class ="label "> Enterprise Security</ div > </ div >
240+ < div class ="stat "> < div class ="num "> 98.9%</ div > < div class ="label "> Test Coverage</ div > </ div >
240241 </ div >
241242
242243 <!-- Use Case Carousel -->
@@ -504,6 +505,109 @@ <h2 class="section-title">Battle-tested security defaults</h2>
504505 </ div >
505506 </ section >
506507
508+ <!-- Security Coverage & Pentest -->
509+ < section style ="padding:100px 24px;background:#0a0a0b; ">
510+ < div class ="section-inner ">
511+ < div class ="section-label "> Security Coverage</ div >
512+ < h2 class ="section-title "> Penetration tested. 803 tests. Zero failures.</ h2 >
513+ < p class ="section-sub " style ="color:#94a3b8;max-width:720px;margin:0 auto 48px;font-size:16px;line-height:1.6; ">
514+ Bungate underwent a comprehensive security audit in an isolated Docker environment.
515+ Every vulnerability found was fixed and verified before shipping. Here's the real data.
516+ </ p >
517+
518+ <!-- Pentest Results -->
519+ < div class ="grid-3 " style ="margin-bottom:48px; ">
520+ < div class ="card " style ="border-left:3px solid #38bdf8; ">
521+ < div class ="card-icon blue " style ="font-size:28px; "> 🛡</ div >
522+ < h3 style ="color:#fff;margin:12px 0 4px;font-size:18px; "> Pentest Verified</ h3 >
523+ < p style ="color:#94a3b8;font-size:14px;line-height:1.55; ">
524+ Full security audit with exploit simulation: double-encoding traversal, health check cascade DoS, X-Forwarded-For rate limit bypass, CORS evasion. All 4 vulnerabilities < strong style ="color:#38bdf8; "> found and fixed</ strong > .
525+ </ p >
526+ </ div >
527+ < div class ="card " style ="border-left:3px solid #22c55e; ">
528+ < div class ="card-icon blue " style ="font-size:28px; "> ✅</ div >
529+ < h3 style ="color:#fff;margin:12px 0 4px;font-size:18px; "> Zero Regressions</ h3 >
530+ < p style ="color:#94a3b8;font-size:14px;line-height:1.55; ">
531+ Every security fix validated against the full 803-test suite. < strong style ="color:#22c55e; "> 633 to 803 tests</ strong > during coverage improvement. Zero pre-existing tests broken by security patches.
532+ </ p >
533+ </ div >
534+ < div class ="card " style ="border-left:3px solid #a78bfa; ">
535+ < div class ="card-icon blue " style ="font-size:28px; "> 🔬</ div >
536+ < h3 style ="color:#fff;margin:12px 0 4px;font-size:18px; "> Recursive Decode Engine</ h3 >
537+ < p style ="color:#94a3b8;font-size:14px;line-height:1.55; ">
538+ Custom < code style ="color:#a78bfa; "> recursiveDecodeURIComponent()</ code > defeats multi-layer encoding attacks (< code > %252f</ code > to < code > %2f</ code > to < code > /</ code > ). Two-pass validation: raw path then fully-decoded path.
539+ </ p >
540+ </ div >
541+ </ div >
542+
543+ <!-- Coverage Stats -->
544+ < div style ="background:rgba(56,189,248,0.04);border:1px solid rgba(56,189,248,0.12);border-radius:16px;padding:40px 48px;margin-bottom:32px; ">
545+ < div style ="display:flex;gap:48px;flex-wrap:wrap;justify-content:center;align-items:center; ">
546+ < div style ="text-align:center; ">
547+ < div style ="font-family:'JetBrains Mono',monospace;font-size:48px;font-weight:800;color:#22c55e; "> 98.97%</ div >
548+ < div style ="color:#94a3b8;font-size:13px;margin-top:4px; "> Line Coverage</ div >
549+ </ div >
550+ < div style ="text-align:center; ">
551+ < div style ="font-family:'JetBrains Mono',monospace;font-size:48px;font-weight:800;color:#38bdf8; "> 94.55%</ div >
552+ < div style ="color:#94a3b8;font-size:13px;margin-top:4px; "> Function Coverage</ div >
553+ </ div >
554+ < div style ="text-align:center; ">
555+ < div style ="font-family:'JetBrains Mono',monospace;font-size:48px;font-weight:800;color:#a78bfa; "> 803</ div >
556+ < div style ="color:#94a3b8;font-size:13px;margin-top:4px; "> Tests (44 files)</ div >
557+ </ div >
558+ < div style ="text-align:center; ">
559+ < div style ="font-family:'JetBrains Mono',monospace;font-size:48px;font-weight:800;color:#f59e0b; "> 0</ div >
560+ < div style ="color:#94a3b8;font-size:13px;margin-top:4px; "> Failures</ div >
561+ </ div >
562+ </ div >
563+ </ div >
564+
565+ <!-- Security Fix Details -->
566+ < div style ="display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px; ">
567+ < div style ="background:#0f0f12;border:1px solid #1a1a1f;border-radius:12px;padding:20px 24px; ">
568+ < div style ="display:flex;align-items:center;gap:10px;margin-bottom:8px; ">
569+ < span style ="font-size:20px; "> 🔒</ span >
570+ < span style ="color:#fff;font-weight:600;font-size:15px; "> Input Validation</ span >
571+ < span style ="background:rgba(239,68,68,0.15);color:#ef4444;font-size:11px;padding:2px 8px;border-radius:10px;margin-left:auto; "> FIXED</ span >
572+ </ div >
573+ < p style ="color:#94a3b8;font-size:13px;line-height:1.55;margin:0; ">
574+ Double-encoding (< code > %252f</ code > ) and quad-dot traversal now defeated by recursive decode + two-pass validation + expanded blocked patterns.
575+ </ p >
576+ </ div >
577+ < div style ="background:#0f0f12;border:1px solid #1a1a1f;border-radius:12px;padding:20px 24px; ">
578+ < div style ="display:flex;align-items:center;gap:10px;margin-bottom:8px; ">
579+ < span style ="font-size:20px; "> ⚖</ span >
580+ < span style ="color:#fff;font-weight:600;font-size:15px; "> Cascade Failure</ span >
581+ < span style ="background:rgba(239,68,68,0.15);color:#ef4444;font-size:11px;padding:2px 8px;border-radius:10px;margin-left:auto; "> FIXED</ span >
582+ </ div >
583+ < p style ="color:#94a3b8;font-size:13px;line-height:1.55;margin:0; ">
584+ Threshold-based health checks: 3 consecutive failures to mark unhealthy, 2 successes to recover. Min-healthy floor prevents complete cascade.
585+ </ p >
586+ </ div >
587+ < div style ="background:#0f0f12;border:1px solid #1a1a1f;border-radius:12px;padding:20px 24px; ">
588+ < div style ="display:flex;align-items:center;gap:10px;margin-bottom:8px; ">
589+ < span style ="font-size:20px; "> 📈</ span >
590+ < span style ="color:#fff;font-weight:600;font-size:15px; "> Rate Limit Bypass</ span >
591+ < span style ="background:rgba(245,158,11,0.15);color:#f59e0b;font-size:11px;padding:2px 8px;border-radius:10px;margin-left:auto; "> FIXED</ span >
592+ </ div >
593+ < p style ="color:#94a3b8;font-size:13px;line-height:1.55;margin:0; ">
594+ Rate limiter now keys on the gateway's < code > getClientIP()</ code > via trusted proxy validator. X-Forwarded-For rotation no longer bypasses limits.
595+ </ p >
596+ </ div >
597+ < div style ="background:#0f0f12;border:1px solid #1a1a1f;border-radius:12px;padding:20px 24px; ">
598+ < div style ="display:flex;align-items:center;gap:10px;margin-bottom:8px; ">
599+ < span style ="font-size:20px; "> 🌐</ span >
600+ < span style ="color:#fff;font-weight:600;font-size:15px; "> Error Handler</ span >
601+ < span style ="background:rgba(245,158,11,0.15);color:#f59e0b;font-size:11px;padding:2px 8px;border-radius:10px;margin-left:auto; "> FIXED</ span >
602+ </ div >
603+ < p style ="color:#94a3b8;font-size:13px;line-height:1.55;margin:0; ">
604+ Global error handler properly catches exceptions. CORS preflight returns clean 204. No more stack trace or internal file path leakage.
605+ </ p >
606+ </ div >
607+ </ div >
608+ </ div >
609+ </ section >
610+
507611 <!-- CTA -->
508612 < section style ="text-align:center;padding:100px 24px 120px;background:radial-gradient(ellipse at 50% 50%, rgba(56,189,248,0.05) 0%, transparent 70%); ">
509613 < h2 style ="font-size:clamp(28px,3.5vw,40px);font-weight:700;color:#fff;letter-spacing:-1px;margin-bottom:12px; "> Ready to ship faster?</ h2 >
0 commit comments