Skip to content

Commit 5b2b380

Browse files
maxaloneclaude
andcommitted
registry: ADR-P38 whitepaper tecnico — EVD-whitepaper-integrity attiva
Registrato il whitepaper pubblicato (P38): ADR-P38 con il contesto completo (fasi 0-5, fact-check F2, revisione punto-per-punto del gestore in F3 incluso il controllo diretto su EUR-Lex, chiusura circolare via dogfooding). Nuova evidenza automatica EVD-whitepaper-integrity nel collettore settimanale: scarica whitepaper-v1.0.pdf dalla URL live, ricalcola lo SHA-256 e verifica che coincida con l'impronta attestata — rileva sia corruzione/alterazione sia mancato deploy. Nessun nuovo controllo inventato: il whitepaper è documentazione, non un controllo di sicurezza (design doc §4 FASE 5). Score 91→92/100 (10/10 indicatori), onesto: un'evidenza automatica in più migliora leggermente il rapporto di Automazione. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
1 parent b60bc62 commit 5b2b380

15 files changed

Lines changed: 326 additions & 181 deletions

generators/collect-evidence.mjs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,18 @@ async function fetchText(url, headers = {}) {
6161
}
6262
}
6363

64+
// Come fetchText ma per contenuto binario (PDF): serve per ricalcolare
65+
// l'impronta del file effettivamente servito, non del file committato.
66+
async function fetchBytes(url, headers = {}) {
67+
try {
68+
const res = await fetch(url, { headers, signal: AbortSignal.timeout(15000) });
69+
if (!res.ok) return { ok: false, status: res.status, url };
70+
return { ok: true, bytes: Buffer.from(await res.arrayBuffer()), url };
71+
} catch (e) {
72+
return { ok: false, error: e.message, url };
73+
}
74+
}
75+
6476
// Aggiorna last_seen con una sostituzione mirata sul testo grezzo, non un
6577
// dump YAML completo: preserva formattazione, commenti e ordine dei campi
6678
// del file esistente (un dump js-yaml li riscriverebbe tutti).
@@ -279,6 +291,18 @@ async function main() {
279291
if (securityTxtOk) evdHits.add("EVD-security-txt");
280292
}
281293

294+
// EVD-whitepaper-integrity (P38): il PDF pubblicato deve restare
295+
// bit-per-bit identico all'impronta attestata (ADR-P38) — è dichiarato
296+
// immutabile per design. GET, non HEAD (stesso gotcha di rete di sopra).
297+
{
298+
const WHITEPAPER_SHA256 = "898ec96815e6bee1f85f93651fb64b6d1ad289510f4ac2fd9fbaa92fe01de452";
299+
const pdfRes = await fetchBytes("https://trust.spaziogenesi.org/whitepaper-v1.0.pdf");
300+
const liveHash = pdfRes.ok ? sha256(pdfRes.bytes) : null;
301+
const matches = liveHash === WHITEPAPER_SHA256;
302+
results["whitepaper-integrity"] = { ok: pdfRes.ok, sha256: liveHash, expected: WHITEPAPER_SHA256, matches };
303+
if (matches) evdHits.add("EVD-whitepaper-integrity");
304+
}
305+
282306
const manifest = { collected_at: today.toISOString(), week, files: {} };
283307
for (const [name, data] of Object.entries(results)) {
284308
const filename = `${name}.json`;

registry/decisions/ADR-P38.yaml

Lines changed: 72 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
id: ADR-P38
2+
title: "P38 — Whitepaper tecnico pubblico: architettura, garanzie e limiti"
3+
date: 2026-07-21
4+
status: accepted
5+
context: >
6+
Secondo lavoro adottato dall'analisi esterna sulla roadmap del 21/07
7+
(`img-auth-hub/VALUTAZIONE-analisi-esterna-roadmap-2026-07-21.md` §2.2,
8+
"la voce di maggior valore"): mancava un documento tecnico pubblico che
9+
spiegasse con rigore che cosa il sistema di attestazione garantisce, con
10+
quali meccanismi, e — con lo stesso peso — che cosa non garantisce.
11+
Pubblico di riferimento: prestatori di servizi fiduciari, CDA e
12+
assemblea dell'ente, accademie e partner convenzionati, revisori esterni
13+
indipendenti, ricercatori e sviluppatori.
14+
decision: >
15+
Pubblicato `whitepaper-v1.0.pdf` (18 pagine, licenza CC BY 4.0, autore
16+
"Spazio Genesi ETS") su trust.spaziogenesi.org, con pagina di
17+
accompagnamento `whitepaper.html` (abstract EN+IT, indice, download,
18+
impronta SHA-256, storia delle revisioni). Sorgente Markdown pubblico e
19+
versionato in questo stesso repository (`docs/whitepaper/`), con mappa
20+
completa claim→fonte in `FONTI.md` per ogni affermazione tecnica.
21+
22+
Contenuto: flusso end-to-end e sei canali di attestazione; le tre àncore
23+
temporali indipendenti (HMAC, marca RFC 3161/AATL, ancoraggio Bitcoin) e
24+
la loro analisi di indipendenza; un modello di minaccia esplicito
25+
(avversari, mitigazioni, residui accettati — incluso il caso reale
26+
dell'audit iniziale che trovò e portò a correggere una falsificabilità,
27+
citato come prova di metodo, non nascosto); i fondamenti crittografici
28+
di SHA-256 (le tre proprietà distinte e a chi servono, stato dell'arte
29+
verificato su fonti pubbliche datate, cosa accadrebbe in caso di
30+
indebolimento futuro); una sezione limiti dichiarati che è la più estesa
31+
del documento (identità self-signed, metadati auto-dichiarati, impronta
32+
dal client, chiave HMAC singola, risoluzione di 30 minuti dello storico
33+
di stato); il posizionamento onesto rispetto a eIDAS (riusando il testo
34+
già validato del Trust Center) e rispetto a C2PA/Content Credentials
35+
(complementare, non concorrente — nessuna adozione in questa versione,
36+
con le ragioni esplicitate).
37+
38+
Processo: fasi 0-1 di ricognizione e assemblaggio da materiale esistente
39+
(Sonnet), fase 2 di stesura delle sezioni tecniche nuove e fact-check
40+
completo del documento (Opus) — cinque errori corretti, tutti dello
41+
stesso tipo (overclaim per generalizzazione: un'affermazione vera in un
42+
caso presentata come vera in tutti). La revisione del gestore (fase 3)
43+
si è svolta punto per punto in chat, non come approvazione in blocco:
44+
il gestore ha verificato di persona sul testo consolidato di EUR-Lex i
45+
tre riferimenti eIDAS citati (articoli 25, 41, 46), confermandone numeri
46+
e sostanza e affinando la formulazione sulla presunzione di legge
47+
riservata alle sole marche temporali qualificate. Su sua richiesta è
48+
stato aggiunto un paragrafo che dichiara la natura di ente del terzo
49+
settore senza scopo di lucro come ragione strutturale coerente con le
50+
scelte di trasparenza del documento — bilanciata esplicitamente
51+
("nessuna forma giuridica garantisce l'onestà di per sé") per non
52+
scivolare in materiale promozionale, cosa che il documento esclude fin
53+
dalla prima riga.
54+
55+
Chiusura circolare: il PDF pubblicato è stato a sua volta attestato sul
56+
servizio che descrive (stesso pattern del bundle mensile di evidenze,
57+
ADR-GTF-008) — pagina pubblica di verifica
58+
https://attestazione.spaziogenesi.org/c/898ec96815e6bee1f85f93651fb64b6d1ad289510f4ac2fd9fbaa92fe01de452.
59+
consequences: >
60+
Un lettore tecnico scettico può verificare da sé ogni affermazione del
61+
documento: leggendo il codice pubblico e il registro citati, ricalcolando
62+
l'impronta del PDF, e confrontando la pagina di verifica pubblica. Il
63+
file `whitepaper-v1.0.pdf` è ora immutabile per design (la sua impronta è
64+
attestata): eventuali correzioni future generano una nuova versione
65+
numerata, mai una sostituzione silenziosa. Nessun cambio di architettura
66+
o di controllo di sicurezza: il whitepaper descrive il sistema esistente,
67+
non lo modifica — `ARCHITECTURE.md` non è stato toccato. Zero modifiche a
68+
imgauth/authweb: l'unica interazione con il servizio di produzione è
69+
stata l'attestazione stessa (dogfooding), eseguita dal gestore dal sito
70+
con Turnstile umano.
71+
evidence: [EVD-whitepaper-integrity]
72+
visibility: public
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
id: EVD-whitepaper-integrity
2+
title: "Il whitepaper pubblicato coincide, byte per byte, con l'impronta attestata"
3+
location: { system: gtf-site, ref: "GET https://trust.spaziogenesi.org/whitepaper-v1.0.pdf", public_via: "GET /c/898ec96815e6bee1f85f93651fb64b6d1ad289510f4ac2fd9fbaa92fe01de452 (pagina pubblica di verifica su attestazione.spaziogenesi.org)" }
4+
collection: auto
5+
freshness_max_days: 8
6+
last_seen: 2026-07-21
7+
integrity: >
8+
Raccolta settimanale (collect-evidence.mjs): GET (mai HEAD, memoria
9+
gtf-collector-network-gotchas) del PDF pubblicato, ricalcolo dello
10+
SHA-256 in locale e confronto con l'impronta attestata
11+
(898ec96815e6bee1f85f93651fb64b6d1ad289510f4ac2fd9fbaa92fe01de452,
12+
ADR-P38). Rileva sia un file corrotto/alterato sia un mancato deploy;
13+
non riverifica la firma HMAC né la prova OpenTimestamps del certificato
14+
stesso (verificabili a mano sulla pagina pubblica).
15+
visibility: public

site/badge.svg

Lines changed: 2 additions & 2 deletions
Loading

site/index.html

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,13 +138,13 @@ <h1>Il registro della fiducia di Spazio Genesi ETS</h1>
138138
<tr class="is-counted is-partial" title="sonda HMAC (componente &quot;worker&quot;, snapshot 2026-W30) + ancoraggi dogfooding onorati (1/1 mesi da 2026-07) + repo con tag di release (3/3) — proxy iniziale, non ancora la quota storica di versioni taggate"><td class="ledger-label">Integrità *</td><td class="ledger-value">100</td></tr>
139139
<tr class="is-counted"><td class="ledger-label">Tracciabilità</td><td class="ledger-value">100</td></tr>
140140
<tr class="is-counted"><td class="ledger-label">Documentazione</td><td class="ledger-value">100</td></tr>
141-
<tr class="is-counted"><td class="ledger-label">Automazione</td><td class="ledger-value">61</td></tr>
141+
<tr class="is-counted"><td class="ledger-label">Automazione</td><td class="ledger-value">63</td></tr>
142142
<tr class="is-counted is-partial" title="revisione: ultima il 2026-07-19 (2/90 giorni); ACT: nessuna ancora risolta"><td class="ledger-label">Audit *</td><td class="ledger-value">100</td></tr>
143143
<tr class="is-counted is-partial" title="snapshot 3/8 settimane + drill: riuscito il 2026-07-19 (2 giorni fa)"><td class="ledger-label">Conservazione *</td><td class="ledger-value">69</td></tr>
144144
<tr class="is-counted"><td class="ledger-label">Riproducibilità</td><td class="ledger-value">97</td></tr>
145145
<tr class="is-counted is-partial" title="scanner su imgauth@v1.24.0: 10/10 flussi mappati a un DAT (4 falsi positivi dichiarati esclusi) — non copre repo client (es. bot Telegram)"><td class="ledger-label">Privacy *</td><td class="ledger-value">100</td></tr>
146146
<tr class="is-counted is-partial" title="validate 30/30 + gate 16/20 — quota PR esclusa (maintainer singolo, ADR-GTF-011)"><td class="ledger-label">Governance *</td><td class="ledger-value">90</td></tr>
147-
<tr class="ledger-total"><td class="ledger-label">Saldo</td><td class="ledger-value">91<span class="unit">/100</span></td></tr>
147+
<tr class="ledger-total"><td class="ledger-label">Saldo</td><td class="ledger-value">92<span class="unit">/100</span></td></tr>
148148
</tbody>
149149
</table>
150150
<p class="ledger-note">10 di 10 indicatori disponibili — i restanti non sono stimati: restano <em>n/d</em> finché non esisteranno i dati per calcolarli davvero. * = valore parziale, passa il mouse per i dettagli. <a href="https://github.com/SPAZIO-GENESI/gtf/tree/main/registry/metrics">Formula di ciascuno</a>.</p>
@@ -689,6 +689,15 @@ <h3>Modifica deployata in produzione senza mai essere stata osservata &quot;dal
689689
<section id="decisioni" class="folio" data-folio="ADR">
690690
<h2>Decisioni</h2>
691691
<div class="journal">
692+
<details class="entry">
693+
<summary><span class="entry-date">2026-07-21</span><span class="entry-title">P38 — Whitepaper tecnico pubblico: architettura, garanzie e limiti</span><span class="entry-status">accepted</span></summary>
694+
<div class="entry-body">
695+
<p>Secondo lavoro adottato dall'analisi esterna sulla roadmap del 21/07 (`img-auth-hub/VALUTAZIONE-analisi-esterna-roadmap-2026-07-21.md` §2.2, &quot;la voce di maggior valore&quot;): mancava un documento tecnico pubblico che spiegasse con rigore che cosa il sistema di attestazione garantisce, con quali meccanismi, e — con lo stesso peso — che cosa non garantisce. Pubblico di riferimento: prestatori di servizi fiduciari, CDA e assemblea dell'ente, accademie e partner convenzionati, revisori esterni indipendenti, ricercatori e sviluppatori.</p>
696+
<p><strong>Decisione:</strong> Pubblicato `whitepaper-v1.0.pdf` (18 pagine, licenza CC BY 4.0, autore &quot;Spazio Genesi ETS&quot;) su trust.spaziogenesi.org, con pagina di accompagnamento `whitepaper.html` (abstract EN+IT, indice, download, impronta SHA-256, storia delle revisioni). Sorgente Markdown pubblico e versionato in questo stesso repository (`docs/whitepaper/`), con mappa completa claim→fonte in `FONTI.md` per ogni affermazione tecnica. Contenuto: flusso end-to-end e sei canali di attestazione; le tre àncore temporali indipendenti (HMAC, marca RFC 3161/AATL, ancoraggio Bitcoin) e la loro analisi di indipendenza; un modello di minaccia esplicito (avversari, mitigazioni, residui accettati — incluso il caso reale dell'audit iniziale che trovò e portò a correggere una falsificabilità, citato come prova di metodo, non nascosto); i fondamenti crittografici di SHA-256 (le tre proprietà distinte e a chi servono, stato dell'arte verificato su fonti pubbliche datate, cosa accadrebbe in caso di indebolimento futuro); una sezione limiti dichiarati che è la più estesa del documento (identità self-signed, metadati auto-dichiarati, impronta dal client, chiave HMAC singola, risoluzione di 30 minuti dello storico di stato); il posizionamento onesto rispetto a eIDAS (riusando il testo già validato del Trust Center) e rispetto a C2PA/Content Credentials (complementare, non concorrente — nessuna adozione in questa versione, con le ragioni esplicitate). Processo: fasi 0-1 di ricognizione e assemblaggio da materiale esistente (Sonnet), fase 2 di stesura delle sezioni tecniche nuove e fact-check completo del documento (Opus) — cinque errori corretti, tutti dello stesso tipo (overclaim per generalizzazione: un'affermazione vera in un caso presentata come vera in tutti). La revisione del gestore (fase 3) si è svolta punto per punto in chat, non come approvazione in blocco: il gestore ha verificato di persona sul testo consolidato di EUR-Lex i tre riferimenti eIDAS citati (articoli 25, 41, 46), confermandone numeri e sostanza e affinando la formulazione sulla presunzione di legge riservata alle sole marche temporali qualificate. Su sua richiesta è stato aggiunto un paragrafo che dichiara la natura di ente del terzo settore senza scopo di lucro come ragione strutturale coerente con le scelte di trasparenza del documento — bilanciata esplicitamente (&quot;nessuna forma giuridica garantisce l'onestà di per sé&quot;) per non scivolare in materiale promozionale, cosa che il documento esclude fin dalla prima riga. Chiusura circolare: il PDF pubblicato è stato a sua volta attestato sul servizio che descrive (stesso pattern del bundle mensile di evidenze, ADR-GTF-008) — pagina pubblica di verifica <a href="https://attestazione.spaziogenesi.org/c/898ec96815e6bee1f85f93651fb64b6d1ad289510f4ac2fd9fbaa92fe01de452" target="_blank" rel="noopener">https://attestazione.spaziogenesi.org/c/898ec96815e6bee1f85f93651fb64b6d1ad289510f4ac2fd9fbaa92fe01de452</a>.</p>
697+
<p><strong>Conseguenze:</strong> Un lettore tecnico scettico può verificare da sé ogni affermazione del documento: leggendo il codice pubblico e il registro citati, ricalcolando l'impronta del PDF, e confrontando la pagina di verifica pubblica. Il file `whitepaper-v1.0.pdf` è ora immutabile per design (la sua impronta è attestata): eventuali correzioni future generano una nuova versione numerata, mai una sostituzione silenziosa. Nessun cambio di architettura o di controllo di sicurezza: il whitepaper descrive il sistema esistente, non lo modifica — `ARCHITECTURE.md` non è stato toccato. Zero modifiche a imgauth/authweb: l'unica interazione con il servizio di produzione è stata l'attestazione stessa (dogfooding), eseguita dal gestore dal sito con Turnstile umano.</p>
698+
<p class="tag-line"><span class="tag">ADR-P38</span></p>
699+
</div>
700+
</details>
692701
<details class="entry">
693702
<summary><span class="entry-date">2026-07-21</span><span class="entry-title">P37 — security.txt (RFC 9116) e policy di responsible disclosure</span><span class="entry-status">accepted</span></summary>
694703
<div class="entry-body">

site/score.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{
2-
"overall": 91,
2+
"overall": 92,
33
"available_count": 10,
44
"total": 10,
55
"indicators": [
@@ -27,7 +27,7 @@
2727
{
2828
"id": "MET-automation",
2929
"label": "Automazione",
30-
"value": 61
30+
"value": 63
3131
},
3232
{
3333
"id": "MET-audit",
@@ -59,5 +59,5 @@
5959
"note": "validate 30/30 + gate 16/20 — quota PR esclusa (maintainer singolo, ADR-GTF-011)"
6060
}
6161
],
62-
"computed_at": "2026-07-21T19:28:23.685Z"
62+
"computed_at": "2026-07-21T19:32:42.017Z"
6363
}

snapshots/2026-W30/cloudflare-access-admin.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"ok": true,
33
"url": "https://imgauth.spaziogenesi.org/admin",
44
"status": 302,
5-
"location": "https://spaziogenesi.cloudflareaccess.com/cdn-cgi/access/login/imgauth.spaziogenesi.org?kid=0198c31335d851e679a7f3618e3a7769748297b9156060f338ec03f4d6a32e3e&meta=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjU3ZGE2MjIxNzE5ODA5NjlkZGFiYzQ1YjQyZTMxYTcwN2E3YjZhZGQ5NDk4ZWFiNjI4NmZhN2Q0NTU5ZmNlZjAifQ.eyJ0eXBlIjoibWV0YSIsImF1ZCI6IjAxOThjMzEzMzVkODUxZTY3OWE3ZjM2MThlM2E3NzY5NzQ4Mjk3YjkxNTYwNjBmMzM4ZWMwM2Y0ZDZhMzJlM2UiLCJob3N0bmFtZSI6ImltZ2F1dGguc3BhemlvZ2VuZXNpLm9yZyIsInJlZGlyZWN0X3VybCI6Ii9hZG1pbiIsInNlcnZpY2VfdG9rZW5fc3RhdHVzIjpmYWxzZSwiaXNfd2FycCI6ZmFsc2UsImlzX2dhdGV3YXkiOmZhbHNlLCJleHAiOjE3ODQ2NDI3OTIsIm5iZiI6MTc4NDY0MjQ5MiwiaWF0IjoxNzg0NjQyNDkyLCJhdXRoX3N0YXR1cyI6Ik5PTkUiLCJtdGxzX2F1dGgiOnsiY2VydF9pc3N1ZXJfZG4iOiIiLCJjZXJ0X3NlcmlhbCI6IiIsImNlcnRfaXNzdWVyX3NraSI6IiIsImNlcnRfcHJlc2VudGVkIjpmYWxzZSwiY29tbW9uX25hbWUiOiIiLCJhdXRoX3N0YXR1cyI6Ik5PTkUifSwicmVhbF9jb3VudHJ5IjoiSVQiLCJhcHBfc2Vzc2lvbl9oYXNoIjoiODlkMTg3ZmU0MjIxMWMwNzg1MTEwOGE2YjVmMjY4MzkwNWViNjA3MjVhM2RiZDc4MjBmYzBlNTE5MzJmOTJiOSJ9.voTJatjWxB8cec8rLoOwQWAvvZoN7yKcJofnTufaiiu5Rx5r5SMFC_HKMtqCJY0SNXOIxbotU4TxPUtz8BUMPwJZHFIZrzrOL-4LHHld9jWjAR-dipfXs9op53N8RSPDVpo948PQgRVdXICUR9Ty22Kb-wpTuGBD-kw90ER_Wf2wIMK3aYfIasxLqt7O_xp08XB8uGHtDzeSBp8qRapR4ltyaDxGmWV_WA3dJDfNQZhxypW4zvUG2vuOtZZiDosXT9Du3WRQaHVXD-lZFr8U3pxOXQPZsdlAbiurZxufnuaUlYGAp3ZrCMKOlkeNSTjPLj6riVbLhkB0NkFkmsAp0A&redirect_url=%2Fadmin",
5+
"location": "https://spaziogenesi.cloudflareaccess.com/cdn-cgi/access/login/imgauth.spaziogenesi.org?kid=0198c31335d851e679a7f3618e3a7769748297b9156060f338ec03f4d6a32e3e&meta=eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiIsImtpZCI6IjU3ZGE2MjIxNzE5ODA5NjlkZGFiYzQ1YjQyZTMxYTcwN2E3YjZhZGQ5NDk4ZWFiNjI4NmZhN2Q0NTU5ZmNlZjAifQ.eyJ0eXBlIjoibWV0YSIsImF1ZCI6IjAxOThjMzEzMzVkODUxZTY3OWE3ZjM2MThlM2E3NzY5NzQ4Mjk3YjkxNTYwNjBmMzM4ZWMwM2Y0ZDZhMzJlM2UiLCJob3N0bmFtZSI6ImltZ2F1dGguc3BhemlvZ2VuZXNpLm9yZyIsInJlZGlyZWN0X3VybCI6Ii9hZG1pbiIsInNlcnZpY2VfdG9rZW5fc3RhdHVzIjpmYWxzZSwiaXNfd2FycCI6ZmFsc2UsImlzX2dhdGV3YXkiOmZhbHNlLCJleHAiOjE3ODQ2NjI2MzUsIm5iZiI6MTc4NDY2MjMzNSwiaWF0IjoxNzg0NjYyMzM1LCJhdXRoX3N0YXR1cyI6Ik5PTkUiLCJtdGxzX2F1dGgiOnsiY2VydF9pc3N1ZXJfZG4iOiIiLCJjZXJ0X3NlcmlhbCI6IiIsImNlcnRfaXNzdWVyX3NraSI6IiIsImNlcnRfcHJlc2VudGVkIjpmYWxzZSwiY29tbW9uX25hbWUiOiIiLCJhdXRoX3N0YXR1cyI6Ik5PTkUifSwicmVhbF9jb3VudHJ5IjoiSVQiLCJhcHBfc2Vzc2lvbl9oYXNoIjoiMmY3NjJkZjlhNGIzODY5MmQ3MGIxMzEwNzZhZjllZGZiMWU3M2NmOTU2ZjMwODU5OGYxOWRhZjk5ZDkzMWUxZSJ9.hX8VFloy8a6AxCa4tEGqJ7J1N9KGcuQ_P1Q41I9N2OG23aOnrfqPtKIf33TKUvnya08myD3DK66Ad_xAlWpPvxYvYxqmsxvS2xWR6rTpFG6E7LcEczRn5_6bo6pY9d3jhfC0vSgYtrgd-su-l7PwfBTPgG-0vzAegXoaY3SiDdM5n381ZE_BSMjEf4l1cinWrvBPjZ9oSWYpE3xTm0fBnolPcSdPb_7hTzMXctjV-o8PXERrhLjrSrbPJ7HQlcfG58hg-77PR8vWElS2NsI-ZLdUl34D0E-E07WImWGWYTHrBdjV7TZfB4F9-ZHMYC84UKaCHQEgNNjl0xX5HyPQPg&redirect_url=%2Fadmin",
66
"headers": {
77
"content-security-policy": "default-src 'self' https: data: blob:; script-src 'self' https:; style-src 'self' https: 'unsafe-inline'; img-src 'self' https: data: blob:; font-src 'self' https: data:; connect-src 'self' https: wss:; media-src 'self' https: blob:; worker-src 'self' blob:; frame-src 'self' https:; object-src 'none'; base-uri 'self'; form-action 'self' https:; frame-ancestors 'self'; upgrade-insecure-requests",
88
"strict-transport-security": "max-age=31536000; includeSubDomains",

0 commit comments

Comments
 (0)