http4s 0.23
Last reviewed Sep 25, 2026
Prompt Details
Prompt Composition
3prompts
- Java 25113 lines · 2.8K tokens
- Scala 3.8.456 lines · 1.8K tokens
- http4s 0.2368 lines · 3.6K tokens
Total237 lines · 8.3K tokens
CWE Coverage
- 20
- 22
- 59
- 78
- 79
- 88
- 89
- 95
- 117
- 190
- 201
- 208
- 209
- 214
- 295
- 297
- 306
- 319
- 323
- 327
- 338
- 346
- 347
- 352
- 362
- 367
- 378
- 427
- 434
- 470
- 471
- 476
- 488
- 494
- 502
- 524
- 525
- 532
- 552
- 565
- 601
- 611
- 613
- 614
- 653
- 674
- 681
- 732
- 749
- 770
- 772
- 776
- 789
- 807
- 862
- 863
- 915
- 916
- 918
- 922
- 942
- 1004
- 1275
- 1333
Prompt Preview
Apply the Scala 3.8.4 prompt, including its Java 25 baseline, first. These rules cover JVM http4s 0.23 and its Ember backend, and were checked against 0.23.36. Validate that application compiler/runtime combination; it is not http4s's minimum runtime requirement or its exact upstream test matrix.
Version and deployment boundaries
- Keep the http4s core, server, client, DSL, Circe, and Ember modules on one release and move them together. On 0.23.0 through 0.23.36, which predate the 0.23.37 fixes for seven HTTP/2, h2c, and WebSocket defragmentation advisories, apply the
withoutHttp2rule below and the defragmenter rule under WebSockets before exposing those features to untrusted peers. - On 0.23.0 through 0.23.36, keep both
EmberServerBuilderandEmberClientBuilderonwithoutHttp2, which preserves their default. If HTTP/2 is required at the edge, terminate it at a patched proxy and use HTTP/1.1 to Ember. Route-levelEntityLimiter,Timeout, and smaller HTTP/2 settings do not repair the affected protocol implementation. - Bind deliberately with
withHost, usewithTLSor an isolated TLS-terminating proxy, and configure finitewithRequestHeaderReceiveTimeout,withIdleTimeout,withShutdownTimeout,withMaxHeaderSize, andwithMaxConnections. Header and socket limits do not impose an application body-size limit or total request deadline. - Validate the accepted host/authority and derive public redirect origins from configuration. Accept forwarded headers only from trusted proxies that overwrite client-supplied values:
Request.fromprefers