Pagina 1 di 1

HTTP Security Headers

Inviato: sab feb 01, 2014 1:34 pm
da hashcat
Mentre analizzavo le intestazioni di risposta di TurboLab.it relative ad una richiesta GET ho notato che l'intestazione X-Frame-Options presenta un valore invalido (X-Frame-Options: SAME-ORIGIN).
Colgo l'occasione per suggerire l'adozione di un paio di intestazioni che non richiedono modifiche di alcun genere ma sono benefiche in quanto garantiscono un incremento della sicurezza per chi visita il sito:

X-Frame-Options: SAMEORIGIN o X-Frame-Options: DENY (potrebbe provocare malfunzionamenti).
X-Content-Type-Options: nosniff
X-XSS-Protection: 1; mode=block

In particolare sarebbe una buona idea adottare la CSP (Content Security Policy). Appena possibile cercherò di elaborare una configurazione di base permissiva su cui modellare quella definitiva.

:yes

EDIT: Noto solo ora che le intestazioni vengono applicate solo a turbolab.it: bug.turbolab.it, ad esempio, ne è sprovvisto.

Re: HTTP Security Headers

Inviato: sab feb 01, 2014 4:23 pm
da Zane
Ho corretto X-Frame-Options (avevo fatto un copia-incolla da un sito che, evidentemente, riportava un'indicazione sbagliata)... Però lo lasciamo a SAMEORIGIN, e non DENY, perché potrei aver bisogno di usare qualche frame interno qua e là.

Bene per gli altri due: ho messo anche loro.... ma cerchiamo di tenere le antenne dritte per captare problemi di compatibilità!!

Per CSP: potrebbe crearci qualche problemino, quindi prima di perdere due ore a farlo tutto per bene... fammi vedere delle bozze che così ne valutiamo insieme la fattibilità!

Re: HTTP Security Headers

Inviato: sab feb 01, 2014 4:42 pm
da hashcat
Sbaglio o li hai abilitati solo per il sottodominio bug.turbolab.it?

Re: HTTP Security Headers

Inviato: sab feb 01, 2014 9:34 pm
da Zane
Immagine

Re: HTTP Security Headers

Inviato: dom feb 02, 2014 4:27 pm
da hashcat
@Zane
Come non detto (scherzetto di Firefox).
:bam

EDIT: Non mi sbagliavo: per qualche strano motivo, le intestazioni sembrano essere inviate solo in risposta a richieste via HTTPS.

:s

Re: HTTP Security Headers

Inviato: dom feb 02, 2014 4:44 pm
da Zane
Vero. Fatto così perché presto sarà tutto solo https

Re: HTTP Security Headers

Inviato: lun feb 03, 2014 9:24 pm
da hashcat
Zane ha scritto:Vero. Fatto così perché presto sarà tutto solo https
Vi sono nuovi sviluppi riguardo al da farsi alla scadenza dell'attuale certificato?

EDIT: Sto cercando di elaborare la configurazione per il CSP, ho alcune domande: i font vengono caricati da dove (locale, indirizzo remoto ?), quali risorse vengono incorporate nelle pagine (non JS (via frame / iframe, plugin / audio-video)).
Vi sono eval() nel js utilizzato?

Per evitare malfunzionamenti pensavo, in un primo tempo, di abilitare la CSP grezza in modalità solo reporting (non filtra nulla ma registra ed inoltra le violazioni della policy ad una reltiva pagina del sito che le raccoglie). Maggiori informazioni QUI e QUI.

:fiu

Re: HTTP Security Headers

Inviato: mar feb 04, 2014 3:46 pm
da Zane
Font: per il momento "locali", ma è possibile che un domani anche "remoti".

Risorse incorporate: oltre a JS, ci sono iframe e Flash. Devono essere acettabili anche <audio> e <video>.

eval(): io non lo uso, ma non so dire a livello di librerie terze.

Bene per il solo-reporting!

Re: HTTP Security Headers

Inviato: mar feb 04, 2014 4:43 pm
da Andy94
Zane ha scritto:Font: per il momento "locali", ma è possibile che un domani anche "remoti".
Nota al volo: non è un problema. Se li prenderemo remoti lo faremo da Google Web Fonts, che serve anche in HTTPS.

Re: HTTP Security Headers

Inviato: mar feb 04, 2014 5:17 pm
da hashcat
Ho completato la policy di prova (in modalità solo report): che faticata!

Google Chrome, Firefox, Opera e Safari:

Codice: Seleziona tutto

Content-Security-Policy-Report-Only: "default-src https:; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdnjs.cloudflare.com/ajax/libs/fullcalendar/ www.google.com/uds/ www.google.com/cse/cse.js www.google.com/ads/search/module/ads/ www.google.com/jsapi www.google-analytics.com/analytics.js ajax.googleapis.com/ajax/libs/jqueryui/ www.googleapis.com/customsearch/ html5shim.googlecode.com/svn/trunk/html5.js code.jquery.com connect.facebook.net apis.google.com platform.twitter.com; style-src 'self' 'unsafe-inline' www.google.com/uds/api/search/ www.google.com/cse/ cdnjs.cloudflare.com/ajax/libs/fullcalendar/; img-src 'self' clients1.google.com www.google.com/cse/ www.googleapis.com www.google.com/uds/css/ i.imgur.com dl.dropboxusercontent.com imageshack.com imageshack.us i.creativecommons.org/l/by-nc-sa/ encrypted-tbn0.gstatic.com encrypted-tbn1.gstatic.com encrypted-tbn2.gstatic.com encrypted-tbn3.gstatic.com caldera1.seflow.it:8444/banda/banda.php; frame-src 'self' www.youtube.com www.google.com/cse; font-src 'self' themes.googleusercontent.com/static/fonts/ fonts.googleapis.com; connect-src 'self'; report-uri https://turbolab.it/csp/report.php"
Internet Explorer (IE 10+):

Codice: Seleziona tutto

X-Content-Security-Policy-Report-Only: "default-src https:; script-src 'self' 'unsafe-inline' 'unsafe-eval' cdnjs.cloudflare.com/ajax/libs/fullcalendar/ www.google.com/uds/ www.google.com/cse/cse.js www.google.com/ads/search/module/ads/ www.google.com/jsapi www.google-analytics.com/analytics.js ajax.googleapis.com/ajax/libs/jqueryui/ www.googleapis.com/customsearch/ html5shim.googlecode.com/svn/trunk/html5.js code.jquery.com connect.facebook.net apis.google.com platform.twitter.com; style-src 'self' 'unsafe-inline' www.google.com/uds/api/search/ www.google.com/cse/ cdnjs.cloudflare.com/ajax/libs/fullcalendar/; img-src 'self' clients1.google.com www.google.com/cse/ www.googleapis.com www.google.com/uds/css/ i.imgur.com dl.dropboxusercontent.com imageshack.com imageshack.us i.creativecommons.org/l/by-nc-sa/ encrypted-tbn0.gstatic.com encrypted-tbn1.gstatic.com encrypted-tbn2.gstatic.com encrypted-tbn3.gstatic.com caldera1.seflow.it:8444/banda/banda.php; frame-src 'self' www.youtube.com www.google.com/cse; font-src 'self' themes.googleusercontent.com/static/fonts/ fonts.googleapis.com; connect-src 'self'; report-uri https://turbolab.it/csp/report.php"
L'ho provata in maniera discretamente approfondita e non sembra causare alcun problema (la mia configurazione di default blocca i plugin sociali, quindi non sono sicuro che questi funzionino correttamente).
Come pagina d'esempio a cui inoltrare il report ho scelto: https://turbolab.it/csp/report.php (può essere cambiata a piacimento).

Cosa fa?
  • Vieta il caricamento di risorse non fornite attraverso https
  • Script: permette l'inclusione di script inline, provenienti dallo stesso host, consente eval (credo sia necessario a jquery) e dai domini consentiti (whitelist di quelli utilizzati su TLI).
  • CSS: permette l'inclusione di css inline, provenienti dallo stesso host e dai domini consentiti (whitelist di quelli utilizzati su TLI).
  • Immagini: permette l'inclusione se provenienti dallo stesso host e dai domini consentiti (whitelist di quelli utilizzati su TLI + imageshack + imgur + dropbox).
  • Font: permette l'inclusione se provenienti dallo stesso host e dai domini consentiti (whitelist per futuri font di google)
  • Media: permette l'inclusione se provenienti dallo stesso host (<audio>, <video>): al momento non utilizzato
  • Embed (non iframe): permette l'inclusione se provenienti dallo stesso host: al momento non utilizzato
  • Frame: permette l'inclusione se provenienti dallo stesso host e dai domini consentiti (whitelist di quelli utilizzati su TLI).
:fiu

P.S.: Vi sono due configurazioni poiché la CSP presenta, in alcuni browser, implementazioni non standard (cambia principalmente il tag). Maggiori informazioni QUI.

EDIT: Mi aspetto una grande quantità di segnalazioni di violazione della policy (inoltrate alla pagina di report) causate dalla presenza di immagini fornite via http o domini non standard (discussioni come "topolone" & co.).

EDIT 2: Ho provato la policy in locale attraverso l'estensione CSP Tester (Chrome).

Re: HTTP Security Headers

Inviato: dom feb 16, 2014 10:05 am
da Zane
nosniff eliminato (crea problemi).

Re: HTTP Security Headers

Inviato: mer feb 19, 2014 8:32 pm
da hashcat
Zane ha scritto:nosniff eliminato (crea problemi).
Ho risposto QUI (nell'altro topic).

:approvo

Re: HTTP Security Headers

Inviato: ven feb 21, 2014 5:54 pm
da Zane
nosniff ripristinato.

Re: HTTP Security Headers

Inviato: lun apr 07, 2014 6:43 pm
da hashcat
Ho apportato lievi modifiche alla policy di prova poiché il calendario ed i grafici mostrati nella pagina "statistiche" venivano bloccatti.

;)

Re: HTTP Security Headers

Inviato: lun apr 07, 2014 8:11 pm
da Zane
Ok!

Tranquillo che non me ne sono dimenticato: porta pazienza ancora qualche tempo e lo attivo, promesso.

Re: R: HTTP Security Headers

Inviato: lun apr 07, 2014 9:26 pm
da hashcat
Zane ha scritto:Ok!

Tranquillo che non me ne sono dimenticato: porta pazienza ancora qualche tempo e lo attivo, promesso.
Con il precedente messaggio non intendevo in alcun modo fare pressione e metterti fretta.

Questa funzionalità rappresenta sicuramente un miglioramento secondario.
Secondo me, il vero problema che bisogna cercare, in qualche modo, di risolvere è riguardante la posta elettronica inviata da TurboLab.it classificata come spam da Microsoft e (potenzialmente) da altri provider.

P.S.: Pensi sia una buona idea menzionare il problema nelle e-mail inviate (chiedendo il contributo volontario degli utenti nel segnalarle come legittime) ed in fase di registrazione per le iscrizioni non VIP (mediante un avviso) ? Un'ulteriore possibilità sarebbe quella di pubblicare un post informativo sul portale e di porlo in evidenza per informare gli iscritti che non frequentano assiduamente TLI ma postano domande o abilitano gli aggiornamenti di una discussione di cui non verrebbero mai notificati correttamente perchè sepolti nella cartella di posta indesiderata.

Re: HTTP Security Headers

Inviato: gio ago 20, 2015 5:13 pm
da hashcat
Segnalo un problema che avevo notato da molto tempo: il CDN non adotta gli header di sicurezza predisposti per il dominio principale

Codice: Seleziona tutto

Strict-Transport-Security: max-age=15768000;
X-Frame-Options: SAMEORIGIN
X-XSS-Protection: 1; mode=block
X-Content-Type-Options: nosniff
Tutti, tranne l'X-Frame-Options (che deve valutare Zane a seconda dell'uso che ne fa (ad occhio dovrebbe anch'esso andare bene)), dovrebbero poter essere aggiunti al CDN senza procurare alcun genere di problemi.

;)