• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

solidjs / solid / 34574334058
78%
main: 89%

Build:
Build:
LAST BUILD BRANCH: seat/s1-swap
DEFAULT BRANCH: main
Ran 11 Sep 2026 07:31AM UTC
Jobs 1
Files 6
Run time 1min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

11 Sep 2026 07:25AM UTC coverage: 71.842%. Remained the same
34574334058

push

github

web-flow
fix(web): stretch the flash key from the deployment secret (#3361)

* fix(web): stretch the flash key from the deployment secret

A captured flash cookie is an offline oracle for `secret`, and the option
accepts any non-empty string. Under a single SHA-256 each guess cost one
hash, so a short or human-chosen secret fell quickly. Recovering it means
reading every flash payload and forging new ones.

- Derive the key with PBKDF2-HMAC-SHA-256 at 100,000 iterations, salted with
  the same domain string as before. The cap is the ceiling some edge runtimes
  enforce on PBKDF2.
- Document the entropy requirement on the `secret` option and show how to
  generate a value. Stretching raises the price of a guess. It does not make
  a guessable secret safe.

The derivation runs once per process per secret and only on the no-JS form
path, so ordinary requests are unaffected. The derived key changes, so
in-flight flashes read as no flash, the same as a secret rotation.

Tested with a spec that attacks the cookie the public API produces: the old
bare digest must not open it, PBKDF2 with the documented parameters must, and
neither a lower iteration count nor another domain salt does.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

* test(web): type the packed flash bytes as Uint8Array<ArrayBuffer>

`subarray` on a plain `Uint8Array` parameter is `Uint8Array<ArrayBufferLike>`,
which `crypto.subtle.decrypt` rejects as a `BufferSource` under the current
lib types. The bytes come from `new Uint8Array(n)`, so the narrower type
is the true one.

Co-authored-by: Claude via Cursor <noreply@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
Co-authored-by: Ryan Carniato <ryansolid@gmail.com>
Co-authored-by: Claude via Cursor <noreply@cursor.com>
Co-authored-by: Cursor <cursoragent@cursor.com>

519 of 790 branches covered (65.7%)

Branch coverage included in aggregate %.

772 of 1007 relevant lines covered (76.66%)

15.01 hits per line

Jobs
ID Job ID Ran Files Coverage
1 34574334058.1 11 Sep 2026 07:31AM UTC 6
71.84
GitHub Action Run
Source Files on build 34574334058
  • Tree
  • List 6
  • Changed 0
  • Source Changed 0
  • Coverage Changed 0
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Repo
  • Github Actions Build #34574334058
  • ded39d29 on github
  • Prev Build on next (#34573589784)
  • Next Build on next (#34574896189)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc