Guida per implementatori di siti solo HTTPS (lato server)

28

La tendenza recente negli attacchi HTTPS è di attaccare il protocollo HTTP. Cosa devo fare per aumentare la sicurezza del mio sito se l'unico protocollo che desidero è HTTPS?

Alcune idee facili da implementare sono

  • Implementa Sicurezza di trasporto rigorosa HTTPS
  • Emetti la pagina di autenticazione su SSL
  • Utilizza i post modulo HTML per il pulsante di invio della pagina di accesso, non i DIV CSS
    • ... perché? l'utente non può vedere l'URL di destinazione quando passa il mouse su
  • Consentire al client di memorizzare nella cache la pagina di navigazione, in quanto ciò scoraggerà alcuni attacchi MITM
  • Utilizza i cookie solo SSL
  • Utilizza un I-Frame Buster e X-Frames-Options header
  • Modifica l'elenco di codici a usa solo RC4, AES o PFS

Altre opzioni avanzate / tecniche potrebbero includere

Opzioni che potrebbero violare le cose (come l'esperienza utente)

  • Disattiva i browser Web che:
  • Disattiva la porta 80
  • Consenti solo reindirizzamenti da un set di domini autorizzati. Non consentire a qualcuno di collegarsi al tuo sito e costringere l'utente a digitare l'URL HTTPS
  • Utilizza un certificato privato per tutte le operazioni per quel sito. Emetti l'identificazione personale (o RootCA) su una connessione SSL

What are your thoughts on a website that implements some or all of these techniques?

What additional techniques would you recommend? (e.g. Use / Don't use OpenID, certain HTTP header directives, etc)

    
posta random65537 01.10.2011 - 16:48
fonte

2 risposte

18

I principali sono:

  • Utilizza SSL in tutto il sito. Non offrire nulla su http. Invece, qualsiasi connessione tramite http dovrebbe immediatamente reindirizzare alla pagina di destinazione del sito principale tramite https.

  • Utilizza la sicurezza del trasporto rigorosa HTTPS. Questo dirà ai browser degli utenti: ti preghiamo di connetterti a me solo tramite https. Questo difende da sslstrip e simili attacchi man-in-the-middle.

  • Imposta il flag di sicurezza su tutti i cookie. Ciò garantirà che i cookie vengano inviati solo tramite un canale https, mai su un collegamento http non sicuro.

  • Evita contenuti attivi di terze parti pubblicati su http. Non caricare contenuti attivi esterni su http. Assicurati che qualsiasi CSS, Javascript, widget, analisi o annunci caricati da fonti di terze parti vengano caricati su https.

    • Potenzialmente ancora meglio, puoi prendere in considerazione l'idea di creare la tua copia e servire queste risorse dal tuo server, se possibile, quindi non devi caricarle da una fonte di terze parti. In molti casi puoi evitare di caricare CSS, librerie Javascript o widget da fonti di terze parti semplicemente memorizzandone una copia sul tuo server.

    • Per l'analisi, tieni presente che Google Analytics supporta https.

    • Gli annunci sono la parte più difficile. Se si utilizzano gli annunci, è possibile che non si abbia altra scelta che accettare annunci di terze parti su http, il che rappresenta un rischio per la sicurezza. Se lo fai, pubblica gli annunci in un iframe (non utilizzare SCRIPT SRC per integrare gli annunci nella tua pagina).

    Va bene caricare immagini ospitate su un host di terze parti purché siano caricate su HTTPS (per evitare avvisi di contenuto misto).

Penso che se fai queste quattro cose, coprirai la maggior parte dei problemi. Il resto sono dettagli che possono essere valutati in base al sito, ma probabilmente hanno un'importanza secondaria (secondo me).

Se vuoi essere attraente, puoi guardare il pinning dei certificati e una tecnologia emergente simile, ma partire da questi quattro è già un progetto abbastanza significativo.

    
risposta data 01.10.2011 - 22:41
fonte
3

Sicurezza dell'utente

  • Ti manca una cosa estremamente importante : mitigazione CSRF.

    Assicurati di comprendere appieno i problemi correlati. Tldr: in addition al token di autorizzazione (es. Cookie di sessione), è necessario un challenge per per identificare se l'azione è destinata all'utente o non intenzionale.

  • Correzione perdite JSONP .

  • X-Content-Type-Options: nosniff , su tutte le pagine per impedire lo sniffing di MIME, specialmente per le pagine generate dagli utenti.

  • Norme sulla sicurezza dei contenuti .

  • Assicurati che il meccanismo di "reimpostazione della password" protetto impedisca alle persone di reimpostare la password di altre persone e ottenere fraudolenti l'accesso.

  • Mostra un avviso enorme enorme quando gli utenti utilizzano password deboli o non lo accettano del tutto.

  • Fai allenare gli utenti (magari tramite un'immagine della freccia su ogni pagina che punta alla barra verde) per verificare se le tue pagine sono caricate con HTTPS. Se usano mai un browser che non supporta HSTS, almeno noterebbero che manca HTTPS.

Sicurezza del server / utente

Privacy dell'utente

  • L'applicazione del riempimento a solo ajax è insufficiente. Per proteggere i tuoi utenti dal monitoraggio della rete , tutte le richieste e le risposte devono essere dati imbottito. Le richieste non devono essere riempite nel tempo, ma le risposte devono.

  • Correzione della cronologia delle perdite a causa di variazione dei tempi per le risposte :

    Suppose that Alice is surfing the Web, and she visits Bob’s Web site at http://www.bob.com. Bob wants to find out whether Alice has visited Charlie’s Web site (http://www.charlie. com).

    First, Bob looks at Charlie’s site, and picks a file that any visitor to the site will have seen. Let’s say Bob picks the file containing Charlie’s corporate logo, at http://www.charlie.com/ logo.jpg. Bob is going to determine whether the logo file is in Alice’s Web cache. If the file is in her cache, then she must have visited Charlie’s Web site recently.

    Bob writes a Java applet that implements his attack, and embeds it in his home page. When Alice views the attack page, the Java applet is automatically downloaded and run in Alice’s browser. The applet measures the time required to access http://www. charlie.com/logo.jpg on Alice’s machine, and reports this time back to Bob. If the time is less than some threshold (say, 80 milliseconds), Bob concludes that Alice has been to Charlie’s site recently; if it is greater than the threshold, he concludes that she has not been to the site recently.

Privacy del server

Disponibilità

Altre cose miscche che non puoi correggere (problemi con il browser):

risposta data 29.03.2015 - 09:14
fonte

Leggi altre domande sui tag