Press "Enter" to skip to content

GOTO 2017 • Building Layers of Defense with Spring Security • Joris Kuipers


[Musica]
benvenuto a questo discorso sulla sicurezza di primavera
in realtà era l’inizio della conferenza
chi ha deciso che su questo irraggiungibile
Traccia che volevano davvero parlare
sulla sicurezza di primavera e mi hanno chiesto di farlo
consegnarlo così quando lo fecero ovviamente io
ha detto di sì perché sono un succhiatore per questi
tipo di cose, ma mi stavo anche chiedendo
questa è questa non è una conferenza Java
giusto questo è uno scopo generale
conferenza degli sviluppatori e tanto meno una primavera
conferenza quindi cosa posso fare
in realtà creare una presentazione o un discorso
sulla sicurezza di primavera sarò interessante
per più di solo persone già dentro
quell’ecosistema in quello spazio quindi io
Ho pensato So che sto andando make
video di me stesso mezzo nudo che salta fuori
di scogliere ve lo presento ma
poi mi rendo conto di no non sono nell’agile
a monitorare non posso realmente fare che si può
fallo solo se stai parlando di questo
lavoro quindi quello che ho deciso di fare è invece
Mi concentrerò sull’applicazione di questo
struttura primavera sicurezza da costruire
livelli di difesa nella tua applicazione
e, si spera, anche se sei qui e
non hai davvero un Java o una molla
sfondo sarai in grado di fermarti
portare via molte cose importanti e
lezioni apprese nelle cose che tu
dovrebbe prendere in considerazione quando effettivamente garantire
la tua domanda però se sei in
Infatti lavorando in questo spazio di Java
primavera quindi ovviamente dovresti essere in grado
per imparare una cosa o due, quindi il mio
il nome è il pennello del cielo che puoi twittare
usando questa maniglia che lavoro per provare
di solito sono anche un architetto pratico
facendo alcuni corsi di primavera qui e
lì e soprattutto nelle chiacchiere sulla sicurezza
giusto è importante stabilire un
senso di autorità in modo che tu possa tutti
fidati di chi sono così perché sono davvero il
ragazzo che dovrebbe parlare a primavera
sicurezza si scopre in realtà hanno un
tag dell’autore in uno dei codici relativi
basi così puoi fidarti di me così il
cosa interessante di questa conferenza
e questa pista è traccia invalicabile è
quella sicurezza è un argomento così vasto
e se hai frequentato qualcuno dei
parla in questa traccia già o anche se
hai appena visitato la nota dominante
dovrebbe essere abbastanza ovvio ciò che vedi
c’è che c’è il reale
sicurezza fisica giusta prevenzione
le persone che accedono realmente ai problemi
in giro con il tuo hardware e l’accesso
è sicuro che ci sia uno stack di rete
che le cose sono correttamente assicurate lì
che hai firewall sul posto ecc ecc
c’è il livello del sistema operativo e
al giorno d’oggi non è nemmeno chiaro che cosa realmente
il livello del sistema operativo è giusto
perché questo potrebbe significare un hypervisor che
potrebbe significare un host minimo per il tuo
docker potrebbe essere tua figlia
contenitori stessi in modo da una stanza che si sta
in realtà ha fatto un discorso che è stato per lo più
preoccupato di quel livello già oggi
è il middleware è il
applicazioni e ancora non è nemmeno
più chiaro al giorno d’oggi ciò che è
middleware e quali sono le applicazioni
perché tutte queste cose sono fluide
e fusione in uno e ovviamente lì
è l’idea di assicurarmi che
hai politiche che governano certe
modifiche e sicurezza
In questo modo, quindi, voglio renderlo molto chiaro
che questo discorso si focalizzerà su come
applicare la sicurezza solo all’applicazione
livello che penso sia un buon seguito
su ciò che abbiamo visto finora fondamentalmente cosa
stiamo facendo è che stiamo andando è stack
dall’hardware al middleware a
pratiche di codifica sicure in Kathleen
parlare di applicare la sicurezza a
le tue applicazioni qui perché se tu
stanno pensando come un tipico web
l’applicazione è in realtà un bel po ‘
diversi livelli nella tua applicazione così
parlare che ha bisogno di qualche forma di
protezione c’è il browser per iniziare
con cui se pensi a cosa Kevin
Ho appena detto in termini di post alles Lal I
può essere un liberale in quello che tu in quello che tu
accetta bene il browser è un eccellente
esempio di come ciò possa portare a tutti i tipi
di noti problemi di sicurezza, quindi probabilmente
bisogno di protezione in quello spazio allora
v’è l’applicazione stessa
a destra si potrebbe desiderare di ottenere le cose a
un livello URL che può indicare alcuni URL sup
accessibile solo da un certo tipo di
persone che potresti avere multi-tenancy
requisiti che potresti avere garantito a
requisiti di sicurezza del metodo
livello si potrebbe avere accesso di sicurezza
requisiti a livello di dati giusto così
ci sono molti livelli diversi per
è necessario fornire protezione per
a volte queste cose non lo sono davvero
direttamente correlato proprio come io in realtà
dire al mio browser che preferirebbe davvero
questa applicazione utilizza solo HTTPS e
non essere incorporato in una cornice di alcuni
altra applicazione è molto diversa
di quello che sto per fare
proteggere qualcuno dal chiamare un metodo in
la mia domanda se non ha il
giusto ruolo ma in molti casi un sacco di
quelle preoccupazioni e molte di quelle
le politiche che implementerai sono
effettivamente modificati essi rinforzeranno ciascuno
altro e questo è importante perché il
idea che stai avendo più cose
aggiungere l’uno sopra l’altro implica anche
che potrebbero esserci in realtà alcuni
ridondanza lì e in genere quando
pensiamo al codice pensiamo che sia un
brutta cosa
perché abbiamo tutti imparato che abbiamo bisogno
per essere asciutto non ci siamo ripetuti e
le cose dovrebbero essere in un posto unico e
stiamo tutti applicando la codifica pulita che gira
fuori che in realtà e quando si tratta di
applicare sicurezza alla tua applicazione
è una buona cosa averne
la ridondanza lì non vuoi
contare su un solo livello di difesa
perché potrebbe esserci ovviamente un
errore in quel livello di difesa e poi
se un perpetratore e l’attaccante
in realtà riesce a passare attraverso quello o
anche peggio voglio dire che è ciò che in genere
succede trovare un modo per bypassare semplicemente quello
completamente bene, allora sei fuori
apri a destra in modo da averne più
livelli di difesa ora questo è un concetto
questa difesa approfondita c’è in realtà
abbastanza largamente applicabile da cui esce
fuori dalla difesa in realtà per lo più il
difesa militare ma è ampiamente
applicabile al software e ai sistemi
nel suo complesso proprio così difesa in profondità è
qualcosa che si applica alle cose io
accennato in precedenza come il tuo attuale
il sistema operativo livella la tua rete
livello ma anche all’interno di un’applicazione
si applica anche a più livelli
quindi è quello che sto per fare
indirizzo di cui parlerò
spiegare come applicare qualcosa del genere
che usando un framework open source
che si chiama sicurezza di primavera questo
esce il portafoglio primavera di aperto
progetti sorgente è un progetto che tu
può usare per aggiungere sicurezza all’applique
livello di tana in un numero di diverso
modi
supporta standard comuni come cose
modulo di autenticazione di base o digest
autenticazione basata che può integrare
con tutto ciò che può integrare con
soluzioni single sign-on ha supporto
per cose come Olaf o auth – etc etc
quindi ci sono tutte queste cose standard
ed è fondamentalmente scritto in un modo che
puoi usarlo all’interno di qualsiasi java web
applicazione che in realtà non è necessario
essere un’applicazione primaverile e tanto meno
qualcosa come un’applicazione MVC a molla
la sicurezza di primavera è in realtà abbastanza
generale e se lo hai
qualcosa che è java basato su servlet
applicazione web è possibile collegarlo e
una delle cose belle della primavera
La sicurezza funziona completamente al
livello di applicazione, quindi cosa significa?
significa che non si basa su qualcosa
come un contenitore esterno in realtà
fornire funzionalità di sicurezza
che in qualche modo devi integrare
con perché questo è il modello standard
che entri in un web Java basato su un cerchio
applicazione è possibile definire che un utente
deve essere autenticato e avere un
certo ruolo ma non puoi realmente
definire come ciò avvenga è completamente
fino al server delle applicazioni da supportare
il tuo meccanismo di autenticazione o
meccanismi di autenticazione perché
al giorno d’oggi è abbastanza comune
applicazione per avere più lì e
sarà davvero difficile prenderlo
stessa applicazione e distribuirla
qualcos’altro perché ne avrai bisogno
ricominciare tutto da capo e capire
come effettivamente ottenere quella roba e
correndo là diventa ancora peggio
se hai bisogno di qualcosa di personalizzato mio
esperienze come architetto di applicazioni
in realtà è abbastanza comune che le persone
avere qualche strano sistema di back-end legacy
che usano come fonte di
autenticazione per esempio se hai bisogno
per collegare la tua applicazione a quella allora
buona fortuna per l’installazione di un plug-in
il cluster WebSphere aziendale in ordine
per facilitare quel diritto così sussurrando
sicurezza tutto questo è in realtà gestito
a livello di applicazione e tocca a
la tua applicazione per gestire il proprio
requisiti di sicurezza che significa prima
di tutto ciò che l’applicazione diventa
completamente portatile perché non lo è
effettivamente fare affidamento su qualsiasi esterno
funzionalità fornita da alcuni contenitori
ma significa anche che sei pieno
controllo in modo che diventi abbastanza reale
facile estendere e adattare il tuo
applicazione all’autenticazione personalizzata
scenari autorizzazione cliente
scenari
ecc ecc proprio una cosa che è
importante da realizzare è quella primavera
la sicurezza è una struttura che presuppone
che il tuo stesso codice può effettivamente essere
fidato destra questo non è un quadro
che ti impedirà di usare un vecchio
Libreria di raccolta di Apache Commons che
ha conosciuto problemi con la deserializzazione
che consente a un utente malintenzionato di farlo
cose non ha protezione contro tutti
delle cattive pratiche di codifica
Kathleen in realtà stava solo parlando di
loro e come effettivamente pulire il tuo
codice in modo che il codice stesso in realtà
diventa sicuro questo non è quel tipo di
quadro questo è un quadro che
in realtà si basa su quello e dice
abbiamo bisogno di aggiungere funzionalità alla sicurezza
requisiti per la vostra applicazione e
consentire fondamentalmente agli utenti di essere
autenticato e quindi fare l’autorizzazione
ed è quello che questa cosa è e quando
arriva a quelle due cose che separano
l’autenticazione e l’autorizzazione sono una
dei punti di forza qui vuoi essere
in grado di dire che non mi interessa davvero se a
l’utente è stato autenticato inserendo a
username password e poi ci vediamo
nel nostro database utente e abbiamo
alcune password hash in là o essere
autenticato contro un LDAP esterno
server o forse eravamo già in realtà
autenticato usando un singolo accesso
del sistema e vogliamo solo gancio in
che non ci interessa davvero come quello
succede se poi vogliamo definire ok
gli utenti che hanno quello in quel ruolo possono
può chiamare un certo URL o utenti che
quindi appartenere ad una certa organizzazione a
certo inquilino nella nostra applicazione che
possono accedere solo i dati che appartiene
quello stesso inquilino giusto quelli sono
requisiti completamente diversi e
sicurezza di primavera assicurati che lo siano
di fatto completamente diverso, quindi puoi
cambiarne una senza influenzare l’altra
uno è praticamente tutto basato Interceptor
perché questo è il livello di applicazione
la sicurezza è fondamentalmente su qualcuno lo è
per fare qualcosa e noi vogliamo
sicuro che così vogliamo impedirlo
dall’accadere automaticamente e vogliamo
per controllare ci sono delle garanzie
vincoli definiti per ciò che questo utente
sta cercando di fare e se è così l’utente
effettivamente soddisfare tali requisiti se
così ok gli permetterà di eseguire il suo
azione o consentirgli di accedere ai dati
che vuole vedere o che vuole
cambiare se non quello che stiamo andando
impedire all’utente di farlo così come
questo funziona fondamentalmente è tutto
ciò accade nel livello del web lo farà
basta usare lo standard
filtri ah perché sono un built-in
meccanismo intercettore fornito
dal servlet spec tutto ciò che
accade sotto che si basa sulla
aspetti personalizzati fondamentalmente che è giusto
un’altra forma di intercettazione per
codice, se ci pensate tutto questo
la cosa è configurata usando un Java fluente
API per quelli di voi che non sono stati
usando la molla per un po ‘o semplicemente
ci ho letto un paio d’anni fa
sì, c’era un sacco di XML
configurazione se sei davvero felice
su XML puoi ancora usare XML
configurazione è in realtà abbastanza bene
perché c’è un ben sviluppato
namespace per questo ma in questo
presentazione Sto solo andando a mostrarvi
il più recente di configurazione basato su Java per
te stesso per questo quindi cosa fa
in realtà prendere per iniziare con questo
quadro bene, in pratica devi aggiungere
è una dipendenza di cui hai bisogno per prenderne un po ‘
qualche filtro impostato Io non sono in realtà
andando a disturbarti a mostrarti che se
stai usando una struttura come la primavera ma
in realtà accadrà automaticamente
per te e poi fai un certo numero di
cose che stanno andando a spiegare la
ben quadro dove sono i miei utenti sono
sta per venire da cosa sto andando
per eseguire l’autenticazione sarà
basato sul nome utente / password
autenticazione con il mio database o
sta per essere qualcosa usando
certificati lato client forse perché
stiamo facendo un’integrazione di b2b qualunque
hai quindi intenzione di configurare
qualche autorizzazione centralizzata
vincoli quindi possiamo dire solo questi
il tipo di utenti è autorizzato a inserirli
tipo di sub-q o elles nel nostro
applicazione e questi metodi possono solo
chiamo per bene tutto quello che sto per mostrarvi
in un momento e poi potresti anche averlo
qualche autorizzazione decentralizzata
inserisci direttamente i tuoi codici nel
posti appropriati e questo è fondamentalmente
così questo è un modo tipico che tu
sistemerebbe così noi abbiamo un
la classe di configurazione qui si sta estendendo
qualche classe aiutante e questo aiutante lo farà
Dare un numero di costruttori fondamentalmente
per configurare l’intera cosa ora non lo sono
andando a spiegare tutto qui ma il
la prima cosa che vedi qui è questa
costruttore di autenticazione manager come il
il nome suggerisce che ti permette di configurare
qualcosa ha chiamato un’autenticazione
manager e non ho intenzione di parlare molto
sull’autenticazione in questo
presentazione ho intenzione di concentrarsi su
autorizzazione ma l’autenticazione
manager fondamentalmente ti permette di
configurare come autenticare gli utenti
Ho intenzione di sostenere la mia abitudine
database che ho intenzione di integrare con un
gufo un attore porno
Userò Kerberos qualunque cosa tu abbia
se si stanno memorizzando i propri utenti quali
in realtà è abbastanza comune in molti
applicazioni che probabilmente finirai
configurazione di qualcosa chiamato utente
servizio dettagli che è davvero semplice
cosa ti basta dare un nome utente quando
qualcuno tenta di accedere e l’utente
il servizio dettagli restituirà un utente con
la vera password hash per quell’utente
e il framework e quindi controllare se
qualcuno sta registrando con successo in
perché la password corrisponde o se non lo è
ci sono un sacco di altri modi per farlo
ma come ho detto sto messa a fuoco non andando su
la parte di autenticazione che mi concentrerò
da parte di autorizzazione e uno dei
le prime cose che dovresti fare probabilmente sono
si vuole fare in modo che certi
le cose non sono semplicemente sicure perché se
qualcuno sta cercando di accedere a una statica
risorsa come scaricare JavaScript
scaricando le immagini solo CSS
molti casi che vuoi che sia
accessibile a tutti raddrizzarla
non dovrebbe essere un utente di registrazione per
così puoi usare questa cosa chiamata
la classe di sicurezza del web per dire che ci sono
alcuni URL che voglio semplicemente ignorare
stiamo solo usando un po ‘come un jolly
i modelli qui sono molto semplici
e poi arriviamo al vero incontro di
la configurazione dell’autorizzazione che
dice bene per esempio ci sono certi
URL a cui voglio limitare l’accesso
quindi dirò tutto su loro
l’amministratore deve essere un utente amministratore per alcuni
altre cose che hanno a che fare con
progetti e se vuoi fare un post per
così tu stai facendo un cambiamento tu
probabilmente deve essere un project manager
perché tutto il resto deve essere solo
loggato non veramente a cuore il
resto ora vi spiego questo in più
dettaglio in un momento ma questo ti dà un
idea di una configurazione veramente di base per
sicurezza di primavera e l’interessante
la cosa è che con questo senza fare
qualsiasi altra cosa ci sarà un sacco
di impostazione predefinita per te che otterrai
tutti i tipi di intestazioni di risposta personalizzate
aggiunto alle tue risposte HTTP per esempio
che istruirà il tuo browser a
operare in modo più sicuro anche
ti verrà costruito per il supporto
falsificazione di richieste cross-site che farò
spiegare in un momento più in dettaglio e
avrai anche un accesso predefinito
pagina perché in realtà non abbiamo specificato
uno di noi stessi ma in genere lo fai
prima di entrare in costume
configurazione sull’autorizzazione che vorrei
Mi piace spiegare quali sono queste impostazioni predefinite
prima di tutto perché è importante
rendersi conto di cosa sta facendo questo framework
quando non si sta effettivamente configurando
tutte queste cose e in secondo luogo
semplicemente perché
Ho notato che molta applicazione
gli sviluppatori non sono veramente consapevoli di ciò che loro
può effettivamente fare in termini di intestazioni a
istruire i browser ad agire in un altro
modo sicuro giusto così una delle cose
quella sicurezza primaverile sarà per te
che ogni richiesta che fai è quella
non esplicitamente ignorato , lo diremo al
browser e non memorizzare nella cache la risposta
perché ciò potrebbe portare a una situazione
dove qualcuno va ai registri di un computer
in un sito funziona un po ‘di lavoro
vedere dati interessanti che non dovrebbero
essere visibili a chiunque quindi esplicitamente
disconnettersi andando via e poi qualcuno
il resto viene in passa attraverso il browser
fare clic sul pulsante Indietro e può
in realtà vedere le vecchie pagine perché
il browser aveva il caching sul lato client
questo è un rischio per la sicurezza ma in generale se
stai costruendo un’applicazione web
un altro sito Web e tutti i tuoi contenuti
sta per essere dinamico l’intero browser
la cosa nella cache sta per entrare
il modo in ogni modo quindi quale sicurezza primavera
sta per fare di default per ogni URL
che non l’hai detto di ignorare
perché ovviamente per contenuto statico tu
voglio il caching del browser tanto quanto
possibile che aggiunga questi browser
intestazioni che è fondamentalmente tutte le
modi diversi che puoi dire a
browser moderno per dire, per favore, fermati
memorizzando nella cache tutto questo contenuto e una coppia
di anni fa se stavi usando HTTPS per
un sito sicuro non era nemmeno quello
importante perché la maggior parte dei browser lo farebbe
scegliere di non memorizzare nella cache il contenuto visitato
HTTPS ma al giorno d’oggi tutti utilizzano HTTPS
per tutto ciò che è in realtà a
davvero buona cosa ma ciò significa anche
i browser ora verranno aggiunti per impostazione predefinita
per lo più cache tutti i certificati del contenuto
su HTTPS, quindi è effettivamente necessario
ordina loro di non fare quel qualcosa
altro è il contenuto che annusa di nuovo così
è un grande esempio di legge post vendita
andato male ciò che i browser si aspettano in genere
da una risposta è un’intestazione che dice
nel browser conosci le cose che sono
in realtà l’invio di te sarà HTML
o sarà JavaScript o è
sta per essere un file binario e sta andando
per contenere il PDF o il suo tipo di
contenere un file excel o qualunque esso sia
che il browser sa come gestire ma
se questo manca, c’è una funzionalità
nel browser indicato dal browser
sì, so cosa
Immagino solo che guarderò
a quello che sta arrivando in hmm sembra
JavaScript
deve essere JavaScript e puoi abusare
questo in un certo numero di modi, per esempio
c’è l’idea di un file poliglotta questo
è un file che è valido come diverso
tipi di file, quindi per esempio è possibile
costruire un file valido
PostScript o modulo PDF ma potrebbe anche
passare come un vero file JavaScript e un
l’attaccante potrebbe essere in grado di caricarlo
file al tuo sistema e che hanno
un altro utente scaricato e se il tuo
il sistema non dirà esplicitamente
questo sarà un file con questo e
questo tipo di contenuto può iniziare il tuo browser
supporre che possa indovinare sbagliato perché quello
il file potrebbe essere effettivamente valido
File JavaScript che eseguirà il
JavaScript questo è qualcosa che tu
può dire al browser di non farlo
richiede ovviamente che la tua applicazione
dovrebbe avere il giusto tipo di contenuto in
le tue intestazioni di risposta e questo è giusto
buone pratiche come sviluppatore
dovrebbe sapere come funziona l’HTTP e tu
dovrebbe sempre assicurarsi che questo sia il
caso e se è la sicurezza di primavera è
aggiungendo automaticamente questa intestazione
dicendo al browser che non voglio che tu lo faccia
iniziare a sniffare i contenuti è che è bello
di indovinare che cosa il tipo di file è sarò
dirvi che cosa è e si sta andando
credimi e non ci proverai
capirlo da soli un altro
interessante quello relativo al HTTP
il trasporto di cui stavo parlando è
qualcosa chiamato HTTP strict Transport
Sicurezza o HST quindi c’è un attacco
vettore dove potresti avere un sito web
questo è HTTP solo come la tua banca
esempio e se lo si accede tramite HTTP
quello che tipicamente farà quel server è
ti mando un reindirizzamento per dirlo
il tuo browser
non hai intenzione di connetterti semplicemente
HTTP che stai per collegare su HTTP
e da lì in poi fuori tutti i tuoi
la comunicazione verrà crittografata
ma quella prima richiesta HTTP che ha portato a
il reindirizzamento che è effettivamente vulnerabile
a un attacco man-in-the-middle lì
potrebbe essere qualcuno in particolare se lo sei
qualcuno su una rete Wi-Fi non fidata
come qualcosa del genere che può
in realtà siediti tra il tuo browser e
il server che intercetta quella richiesta e
poi reindirizzandoti a qualcos’altro
che controllano e pensi di essere
andando sul sito giusto ma tu lo sei
non è così
puoi fare è puoi effettivamente inviare il
intestazione dopo che il tuo browser ha fatto un HTTP
richiesta di dire al browser la prossima volta
si sta andando a cercare di accedere a questa
dominio dell’applicazione assicurati di farlo
su HTTP direttamente così anche se l’utente
vorrebbe aggiungere un sito Web ai segnalibri usando
HTTP pianura lo schema tuo browser andando
dì ah, non lo farò nemmeno
richiesta, farò una cosa sicura
richiesta dal get-go che impedisce
tu contro quell’uomo nel mezzo
attacco puoi farlo solo per il
dominio puoi farlo anche per tutti
sottodomini, se tu se lo sei
connettersi a qualcosa e questo è il
in modo che questo sia abilitato c’è a
stretto intestazione di sicurezza del trasporto che puoi
imposta alcune opzioni lì e questo è ciò che
spruzzare la sicurezza farà un errore amico
perché la sicurezza di primavera cerca di essere come
sicuro il più possibile
fuori dalla scatola in modo che non è necessario
configura qualsiasi cosa per ottenere questo
in realtà interessante perché questo può andare
molto male ho lavorato per un media
compagnia ad Amsterdam dove avevamo costruito
il nostro sistema e lo abbiamo assicurato con la primavera
sicurezza e dopo che era dentro
la produzione già da tempo funzionava
grande ma volevano avere un po ‘
opzioni di autenticazione aggiuntive e
in particolare volevano avere
autenticazione federata usando sam’l così
abbiamo aggiunto quello e poi la libreria sam’l
ha detto bene che l’utente sta provando a venire
con una semplice richiesta HTTP anziché
con una richiesta HTTP sarò negarlo
ma non stavano arrivando
attraverso HTTPS e si è scoperto che il
il bilanciamento del carico stava chiudendo il SSL
connessione e non stava aggiungendo il
giusto colpo di testa alla richiesta di dire al
applicazione sai che questa richiesta era
originariamente fatto su HTTPS ora eravamo
solo utilizzando HTTPS al momento per consentire
l’utente per accedere con un nome utente
password la ragione di quello era semplicemente
che il resto della loro applicazione
non supportava HTTP completo solo al
tempo perché avevano una rete pubblicitaria
che poteva pubblicare solo annunci pubblicitari
HTTP cosa abbiamo fatto quando l’abbiamo scoperto
la nostra libreria sam’l ci diceva di dircelo
non funziona non stai facendo a
richiesta sicura siamo andati al
colleghi di manutenzione in rete e abbiamo detto
sai puoi aggiungere questa intestazione per noi
ogni volta che c’è una bella richiesta TPS
perché allora l’applicazione sarà
capace di
dicono che stiamo facendo una richiesta
su HTTPS certo che lo abbiamo testato
ha funzionato alla grande
Ho lasciato lì sono tornato una settimana dopo
e si è scoperto che chiedendo a quelli
Ragazzi della rete per farlo in produzione
perché dopo aver testato su accettazione noi
detto sì, vai avanti e fallo dentro
produzione anche per quando ci schieriamo
l’accesso federato li abbiamo rotti
intero sito web e non solo
il loro sito web su cui gira tutto
il loro dominio perché si è scoperto che come
appena qualcuno effettuerà l’accesso tramite HTTPS
ora automaticamente quell’intestazione sarà
inviato al browser e al browser
direi okay se me lo dici allora lo farò
solo continuare a fare tutte le richieste sopra
HTTPS ora include tutte le richieste
per servire gli annunci e tutti gli altri
contenuto che non potrebbe essere in realtà
caricato su HTTPS, quindi pensaci
se avete intenzione di aggiungere qualcosa
come la sicurezza di primavera o qualcos’altro
che avrà questo valore predefinito sul tuo
applica la tua applicazione web stessa
potrebbe non supportare HTTPS solo, ma si spera
sarà perché dovrebbe essere davvero
il default nel 2017 ma anche quello stesso
il dominio dell’applicazione potrebbe ospitare altri
applicazioni che non sono sotto il tuo
controllo che potrebbe non supportare in realtà
HTTPS solo così se vuoi farlo
qualcosa in realtà penso che questo non sia un
grande default questo è probabilmente qualcosa
che dovresti semplicemente configurare al
server Web o il livello di bilanciamento del carico su
aggiungi quell’intestazione perché ce n’è
fatto una decisione consapevole che è
in realtà va bene per l’intero dominio
fare questo diritto in modo da tenere a mente alcuni
altre cose che faranno scattare la sicurezza
do è che impedirà clickjacking
attacca ciò che è è un modo che il tuo
sito sarà effettivamente proiettato su
alcuni altri siti web in un invisibile
frame in modo che l’utente non veda realmente
la tua applicazione vede qualcos’altro
con quando pensa di fare clic su a
pulsante in cui potrebbe effettivamente fare clic
qualcosa nel tuo sito web dove è
già loggato e facendo qualcosa
che non ha intenzione di fare questo è
chiamato un attacco clickjacking e c’è
un modo semplice per prevenire questo semplicemente
dicendo al browser che conosci questo lato
non può mai essere incorporato all’interno di una cornice
questo è ciò che farà la sicurezza del flusso
predefinito usando le opzioni del frame X qui
puoi sintonizzare ciò che ovviamente puoi dire
beh non può essere incorporato in un frame se
è in esecuzione su un dominio diverso ma
in realtà è a posto nel mio
perché ho fiducia che ne hai un po ‘
opzioni lì, ma puoi guardare
questo non è interessante
tutti possono avere familiarità con ciò
è questo è chiamato un cross-site riflesso
attacco scripting dove fondamentalmente il
server è solo l’invio di nuovo qualunque sia il
utente passato nella sua così semplice come sembra
ma ciò significa che se l’ utente lo è
indotto a cliccare su qualche URL che
potrebbe contenere qualche codice JavaScript dannoso
che JavaScript potrebbe effettivamente ottenere
eseguito dal server di invio indietro
esattamente la stessa cosa ora dai browser
predefinito
in genere ti impedisce già da questo
ma quali browser faranno di nuovo in a
tipico stile post o moda è che lo faranno
cerca di essere il più gentile possibile perché
vogliono davvero cose per cui lavorare e basta
non si rompono così che cosa browser faranno da
l’errore è che cercheranno di aggiustare il
contenuto che viene rimandato in questo modo e
questo è un altro fattore di attacco e questo
scopre che ci sono in realtà
attacchi che fanno uso di una funzionalità di
il browser che rileverà un tentativo
in uno script cross-site e riflettente
quindi prova a ripararlo ma non riesce a e
sei ancora fregato così fondamentalmente cosa
la sicurezza di primavera farà è che lo dirà
il tuo browser non basta nemmeno provare
bloccare tutto il contenuto che sembra
questo tipo malizioso di richiesta così
ci sono altre cose che puoi fare ma
non è abilitato di default per
esempio puoi prevenire qualcosa chiamato
beh, in realtà puoi abilitare qualcosa
chiamato la chiave pubblica che fissa ciò che è
facendo è che la tua applicazione è
in realtà dicendo al browser questo dominio
userà sempre questo particolare SSL
certificato e se si tenta di andare a questo
dominio la prossima volta e trovi a
certificato valido ma in realtà non lo è
quel certificato Oh stai attento a qualcosa
è sbagliato ora questo non è qualcosa che
In genere ti consiglierei di farlo
abilitare di default ma ci sono
forse sicuramente buoni casi d’uso per questo
ti ricordi un paio di anni fa lì
c’erano molti problemi con Lenovo
laptop per esempio in the
gamma di consumatori che erano in realtà
spedizione con software che era
iniettare annunci nel browser e così via
lo stava facendo davvero uomo nel
in mezzo a te con la sua stessa abitudine
certificato allora quel certificato era
trapelato e fondamentalmente gli attaccanti potrebbero
rendere qualsiasi sito Web legittimo per tutti
possedere un portatile come questo
in realtà impediscono quell’attacco
succede che ci sono altre cose ma
questa è fondamentalmente l’ idea delle intestazioni
destra
questa è solo una parte del browser che non abbiamo
anche fatto attraverso il server ancora questo
sta solo dicendo al browser di comportarsi
un modo più sicuro ma qualcos’altro
che sarà abilitato di default è CS
ref protection cross scripting laterale
richiedere la falsificazione conosciuta anche come sessione
scrivere che penso sia molto meglio
termine perché descrive la scrittura della sessione
esattamente quello che è è un modo per un
attaccante per cavalcare solo con un valido
sessione che hai già così tu
un utente che ha effettuato l’accesso sarà ingannato
continuare attraverso alcuni siti Web dannosi e
quel sito Web in realtà farà un
richiedere al sito web che si è
già loggato in qualche modo sarà un trucco
ti piace farlo
questo pulsante davvero grande che dice vincere
soldi gratis ora quando sei in realtà
cliccando su quello ora non farlo ma
se fai ciò che accadrà questo tuo
il browser effettuerà tale richiesta e
perché fa quella richiesta a quello
dominio
Si invia bene ho una sessione valida
cookie già per quel dominio quindi sono
sto per mandare la sessione
cookie e per quanto ne sa il server
hai davvero iniziato questa richiesta
tutto sembra ok così sarà solo
Esegui la tua richiesta appena hai ottenuto
indotto a fare questo e questo è
in realtà un fattore di attacco abbastanza comune
ecco perché la sicurezza della primavera impedisce
da parte di questo tipo di attacco
predefinito ma è necessario fare qualcosa
qui non è solo questione di
impostando un’intestazione del browser perché il tuo
il browser non può sapere questo così il modo per
in genere fare questo è aggiungere una personalizzata
token a ogni pagina web che il tuo
rendering dell’applicazione che contiene
qualcosa come un modulo che l’utente può
quindi inviare e poi quando l’utente
invia quello forma quello che stai andando a
fai è che ti assicurerai che tu
inviato esplicitamente quel token con il resto
del modulo e quindi il tipo di utente di
il server può controllare e dice sì
quel gettone è lì è in realtà il tuo
il token sembra legit ma se un attacker
cerca di fare la stessa cosa che faranno
mai essere in grado di creare un sito falso o a
pagina falsa che invierà anche quello stesso
intestazione del token perché non lo sanno
quell’intestazione del token perché non possono
in realtà ottenerlo dal server
deve essere registrato per ottenere il
token quindi devi rispedirlo
questo è fondamentalmente come funziona ora
una cosa importante qui è quella
se stai usando questo dovresti essere solo
usando questo per le operazioni di cambio di stato
quindi dovresti farlo per i post
per mettere
quattro cancella non dovrebbe essere utilizzando
prima di tutto dimentica di essere al sicuro
in generale è così che viene progettato HTTP
per lavorare una richiesta di ottenere non dovrebbe
in realtà cambia lo stato sul server
quindi ti sto ingannando per ottenere un risultato
chiedo che io come attaccante non possa
effettivamente vedere il risultato di dovrebbe essere
bene
ancora più importante se vuoi includere
il token in una richiesta get avrebbe
essere parte dell’URL perché non è possibile
mettilo in una forma e un corpo codificato
perché non è così che funzionano le richieste
in modo che permetta al token di perdere
e poi sei di nuovo al punto di partenza
perché bene, allora, un aggressore potrebbe
effettivamente essere in grado di ottenere il tuo token come
bene e lui può ancora ingannarti
forgiando una richiesta così fondamentalmente come
sicurezza di primavera fa questo quando
accedi alla tua sessione
cookie di sessione si otterrà anche il
token dell’ambito della sessione e voi come a
lo sviluppatore è responsabile per l’inclusione
che in tutte le tue pagine web dove tu
includono un modulo che verrà pubblicato
o mettere o usare leet fondamentalmente giusto se
è semplice HTML sarà post
ma se sarà JavaScript, lo avrai
pensare anche a questi altri verbi
questo è il modo tipico per farlo
fondamentalmente quelli il valore del token e il
il nome del token sarà reso disponibile
come attributi di richiesta puoi solo
includerli ci saranno le biblioteche
fare questo porta per te, se tu sei
usando come la libreria di tag dalla primavera
riutilizzare qualcosa come se fossi una foglia
lo farà tutto per te
automaticamente non te ne accorgi nemmeno
ma il token sarà lì, ci sarà
essere un parametro di richiesta nascosta nel
forma ora questo è bello se stai costruendo
un’applicazione che l’HTML sul lato server
rendering al giorno d’oggi un sacco di persone lo sono
in realtà solo costruendo un’unica pagina
applicazioni che pubblicano semplicemente JSON nel
corpo della richiesta
in realtà non pubblicano la forma e non codificano
parametri che significa che non puoi
aggiungi un altro modulo e codice nascosto
richiesta parametro in modo che vi sia una soluzione
per questo ovviamente e di default il
modo in cui questo funziona nella sicurezza di essere
sicurezza almeno se riesci a capire
qualcosa chiamato token CSR di cookie
repository ciò che fa è invece di
creando un token e memorizzandolo
server nella sessione sarà solo
un altro biscotto che invia al
cliente tuttavia quando il cliente fa un
richiesta non controlleremo il
valore del cookie perché sta andando bene
per essere inviato automaticamente, quindi non lo è
essere fidati
ci assicureremo che il
JavaScript in esecuzione nella pagina singola
l’applicazione prenderà il valore da
quel cookie e poi lo inserisce nel
richiesta come intestazione possiamo prendere il
valore dall’intestazione della richiesta che possiamo
confrontarlo con il valore che è stato anche
inviato dal browser nel cookie così noi
in realtà non devi ricordare nulla
sul server qui stiamo solo confrontando
due valori che il browser ci ha inviato
e controlleremo se sono loro
stessa cosa la cosa interessante qui è
un attaccante non può forzare il tuo
browser per leggere effettivamente il valore di
quella sessione token CSRF e dal
cookie e quindi inviarlo come richiesta
intestazione perché i cookie sono limitati a
essere letto solo da un JavaScript che era
servito dallo stesso dominio proprio così
questo ti dà ancora abbastanza bene
protezione contro lo srf se sei un
esperto di sicurezza che potresti effettivamente discutere
che è leggermente meno sicuro nella maggior parte
casi in cui in realtà non ti interessa perché
questo fornirà sufficienti
protezione contro il tipo comune di
Attacco CSRF quindi è così
fondamentalmente coprendo il tutto da
browser al server giusto così ora noi
in realtà andare sul server e qualcuno
sta effettivamente cercando di fare una richiesta
abbiamo deciso che questo è probabilmente un
la richiesta legittima non è un utente malintenzionato
cercando di costringermi a usarmi per fare
qualcosa così come stiamo andando sicuro
questo e un modo molto comune è quello di dire
avremo regole che stanno per
abbinare determinati URL nella nostra applicazione così
stiamo andando nostri struttura degli URL su
alcune autorità sono quelle autorità
in genere ruoli che è possibile assegnare a
utente e poi controllerà se tu
avere accesso o meno a ciò che sembra
come in primavera la sicurezza è quella dentro
di questo metodo che ti dà questo HTTP
oggetto di sicurezza c’è un metodo chiamato
autorizza richieste che ti danno un
builder per configurare tutto questo URL
sicurezza basata quindi in questo esempio cosa
vediamo che prima di tutto diciamo
tutto inizia con l’amministratore della barra
che dovrebbe essere accessibile solo per l’amministratore
utenti così è facile farlo se tu
in realtà modella i tuoi URL in base a questi
regole di sicurezza che hai perché
allora questa è una scala
o uno-a-uno mappatura inoltre stiamo andando
per dire se hai intenzione di avere un utente
quello fa un post così che è presumibilmente
un’operazione di cambio di stato non sicura a
tutto sotto progetti di slash bene lui
deve avere il ruolo di project manager
in questo caso perché volevo adattarmi
questo su una singola diapositiva diremo
per tutto il resto sì basta
per essere un utente autenticato devi
registrati non può essere anonima voi
non può essere un utente ospite, ma noi no
davvero a cuore il resto adesso ci sono
alcune limitazioni e alcune cose complicate
e usando questo approccio e soprattutto
nell’utilizzare questo approccio esclusivamente così
prima di tutto questo potrebbe diventare gonfio
molto rapidamente soprattutto se il tuo URL
la struttura in realtà non rispecchia il tuo
autorità o la struttura del ruolo ma
stai usando un altro modo di mappare
out URL molto rapidamente il tuo codice sarà
assomiglia a questo e questo è come uno
terzo della configurazione generale di a
progetto attuale su cui sto lavorando così
può questo può diventare molto noioso da fare
manutenzione su molto rapidamente anche possibile
essere ingannevole per avere ragione, perché ci sono
alcuni Salty qui ordinano le regole
conta davvero la cosa più importante
dovrebbe andare prima la metrica potrebbe
effettivamente essere leggermente diverso in
comportamento di quello che stai pensando e
Parlerò un po ‘più su di esso sul
la prossima slide e davvero importante sei tu
bisogno di avere un catch-all in atto qui
questo è un principio di sicurezza comune
se non hai esplicitamente indicato come
qualcosa dovrebbe essere sicuro che è
probabilmente solo dovrebbe essere inaccessibile
piuttosto che non essere sicuro per impostazione predefinita
così il prossimo sulla diapositiva precedente I
ti ha mostrato tutte le richieste
autenticato come l’ultima riga che dice
che almeno i buchi di cattura pure
dovresti almeno aver effettuato il login
Per fare qualcosa se non l’ho fatto
esplicitamente permesso di farlo prima
come utente anonimo, almeno lo sono
richiesto di essere autenticato se lo sei
in realtà rigorosa sulla sicurezza ben
forse dovrebbe essere paranoico dire bene
okay, il mio catch-all sta per succedere
be ho intenzione di negare tutto l’accesso così
ciò significa che devi esplicitamente
indicare i requisiti di sicurezza per
ogni URL se questo è un approccio praticabile
o non dipende molto dal tuo
applicazione in modo non ho intenzione di provare a
fingere di avere una verità assoluta qui
ma questo è sicuramente
qualcosa da considerare quindi quali sono i
colpi di budella di cui stavo parlando bene
qui vedi un esempio dove prima
stiamo dicendo se qualcuno cerca di andare
il sottodominio di inventario del prodotto nel nostro
applicazione ogni URL a partire da quello
essi devono essere in quella min, ma per
tutto il resto sotto i prodotti slash
devono essere un amministratore ma
anche l’aumento regolare degli utenti è sufficiente se
qualcuno in realtà avrebbe invertire questi due
le linee all’improvviso hai un grande
problema perché ora se qualcuno in realtà
entra in meno sui prodotti slash
barra pubblicitaria elimina l’ intero
inventario HTML puntato corrisponderebbe semplicemente
questo ultimo progetto cancella la regola delle stelle
e gli utenti regolari sarebbero autorizzati a farlo
questo ora se ti sei letteralmente scambiato
queste due linee che probabilmente conosceresti
questo semplicemente rivedendo il
configurazione se in realtà sei il tuo
la configurazione sembra questa e l’altra
la linea è laggiù e l’altra è
laggiù probabilmente non lo farai
nota questo, quindi stai attento a questo
assicurati che le tue regole più precise
prima di tutto un’altra cosa è questa e
questo è particolarmente cattivo perché
Ho visto persone incespicare su questo se
non stai usando i caratteri jolly e lo sei
dicendo okay slash product / delete
è accessibile solo agli utenti amministratori
quella sarà una corrispondenza esatta, quindi se
qualcuno va letteralmente a quell’URL okay
funzionerà, ma molti framework web dicono
bene sai tagliare barre sporadiche
cancelli lo considererò esattamente
la stessa risorsa dei prodotti slash /
elimina la barra portiamo sicurezza
non porta sicurezza dice sì, se tu
ho una barra finale e sto usando un
admin signore, questo è un URL diverso così
non è sicuro se qualcuno è qualcuno
che tecar aggiunge semplicemente una barra finale
e cerca di fare questo chissà cosa vorrà
capita che non sarà certamente
questa regola che si combina così si spera
hai un buon occasionale da qualche altra parte
ma non in corrispondenza di URL quindi c’è un
facile soluzione per questo e quello è non usare
l’end matcher usa qualcosa
chiamato MVC matcher perché le regole
di quel matcher
corrisponde esattamente al modo in cui MVC primavera
gestisce la mappatura delle richieste ma se lo sei
non usando la molla MVC se stai usando
qualcos’altro assicurati di capire
quelle regole e assicurati che tu
codificarli correttamente e testare questo diritto
quindi una cosa che questo illustra è
che fa semplicemente affidamento su un singolo livello di
sicurezza
semplicemente facendo affidamento sulla tua mappatura a livello ell
è in realtà abbastanza complicato quindi in molti
casi in cui ciò che si vuole fare è in aggiunta
a questo e non invece a questo con dentro
Oltre a questo si desidera utilizzare il metodo
livello di sicurezza e quindi questo è
qualcosa che è necessario attivare
esplicitamente e mostralo qui per
quelli di voi a cui importa davvero
sicurezza di primavera quindi c’è una rete
abilitato bene con la sicurezza del metodo
annotazione puoi dire che voglio abilitare
queste annotazioni pre post e se tu
abilita ciò che questo ti permetterà di fare
fai è possibile mettere un’annotazione su a
metodo per quelli di voi che non stanno facendo Java
questo è solo un piccolo pezzo di metadati
e quello a pre-autorizzato può essere usato
per specificare un’espressione di sicurezza così dentro
questo caso stiamo andando a dire al fine di
chiamare questo metodo deve essere registrato
in utente e utente connesso deve avere
tira un product manager e se è così
non è il caso quindi o non c’è
utente registrato o c’è ma lui
non deve richiedere il ruolo di questo metodo
non sarà chiamato ma invece sicurezza
verrà generata un’eccezione correlata e tu
in grado di gestirlo mostrando uno
accesso alla pagina negata se l’utente era già
loggato o mostrando una pagina di accesso se
l’utente non ha nemmeno effettuato l’accesso per iniziare
con e puoi solo iniziare il tutto
processo di autenticazione lì e là
molto di più che puoi fare con questo
caratteristica particolarmente interessante, penso
è che questo ti permetterà di accedere
parametri del metodo nella sicurezza
vincoli quindi in questo esempio cosa sono
dire è bene, non da solo , devi
avere un ruolo particolare per chiamare
aggiornare i prodotti anche il prodotto reale
che stai cercando di aggiornare qui dovrebbe
avere un ID dell’azienda e l’azienda lo farebbe
essere un tipo di inquilini in questo
sistema particolare che corrisponde all’idea
della compagnia degli utenti attuali in modo che
significa che posso aggiornare solo il prodotto
apparteneva alla mia compagnia se ci provo
aggiornare alcuni altri prodotti inquilini forse
abbassare il loro prezzo così tanto
andranno in bancarotta o addirittura farlo
nel modo opposto, quindi non lo saranno
vendere qualsiasi cosa a cui non sarò permesso
farlo perché sarò solo in grado di
aggiornare i prodotti che appartengono al mio
società ora allo stesso modo di pre-autorizzatori
anche post autorizzare in modo che questo accada
dopo che il metodo è stato eseguito e puoi farlo
alcuni controllano cosa ritorna così tanto
allo stesso modo se diciamo che stiamo andando a guardare
su un progetto per ID che ID stesso
a seconda di come implementiamo il nostro
multi-tenancy
potrebbe non indicare in realtà se questo è un
prodotto che appartiene alla corrente
società o non così simile al
luce precedente quello che possiamo fare qui è
si può dire che nel post autorizzare bene
l’ oggetto che è stato restituito quale
è comodamente accessibile sotto il
il nome dell’oggetto di ritorno deve appartenere nuovamente a
la stessa società dell’utente attuale
giusto così è quello che permettono queste cose
tu devi fare e questo è ancora carino
dichiarativa abbiamo appena messo un’annotazione su
codice Posso scrivere un test di integrazione
questo non fa nulla con sicurezza
e queste cose semplicemente non saranno
gestito in modo da non dovermi preoccupare
creare utenti fasulli ovunque per
esempio a scopo di test ma su
dall’altra parte sono in realtà espressivi
abbastanza da poter fare ogni sorta di cose
quindi ci sono molte funzioni integrate
per questo quindi ti ho mostrato di avere un ruolo
puoi controllare più ruoli che puoi
controlla l’anonimo puoi controllare se
qualcuno è semplicemente un utente di accesso o meno
ma ovviamente finirai per avere
alcuni vincoli personalizzati qui in genere
ora si potrebbe effettivamente dire a spruzzo
sicurezza voglio aggiungere il mio
espressioni direttamente in modo da poter avere io
non so ha l’indirizzo IP nella whitelist come
una funzione si scopre che anche se
è possibile che non sia particolarmente facile
Fortunatamente c’è un modo molto semplice
per ottenere esattamente lo stesso effetto perché
da una di quelle espressioni puoi
in realtà chiamare un metodo semplicemente su uno di
la tua primavera – oggetti così se abbiamo un
servizio chiamato controlli di autorizzazione in
questo caso siamo tutti controlli per farlo
in forma sulla diapositiva possiamo dire
pre-autorizzato e quindi dire ok in ordine
aggiungere una relazione al paziente che io sia
passando qui voglio controllare se il
l’utente corrente ha effettivamente un attivo
rapporto terapeutico con questo
particolare paziente, quindi questo sarebbe in
il dominio di alcuni sistemi di cartelle cliniche
per esempio e questo lo rende davvero
facile da avere sicurezza personalizzata integrata
in modo dichiarativo nel tuo
applicazione
quindi questa è la sicurezza a livello di metodo ora se
ti preoccupi davvero solo dei ruoli e di te
anche molto attento agli standard
perché gli standard puoi usare la rete
ruoli consentiti annotazione che è a
annotazione Java standard è completamente
supportato dalla sicurezza di primavera anche se
devi aggiungere supporto per questo
esplicitamente stiamo dicendo jsr 250 abilitato
è vero, perché questo è il nome del
specificazione
che include questa annotazione ma questa
ti consentirà solo di dire che l’utente dovrebbe
hanno un certo ruolo in altro modo
in generale ho appena dimenticato completamente
e ti consiglierei di usare solo il
pre-imposto
autorizzato per tutto perché tu
può fare il saggio, ma anche così
molto più giusto quindi è dichiarativo
sicurezza a livello di metodo ora in molti casi
come stai lavorando con questo lo farai
scopri che anche tu vuoi fare cose
programmaticamente probabilmente non direttamente
nella tua logica aziendale mescolare con sicurezza
codici ma in alcuni altri ambienti
non è necessario essere in grado di scrivere il codice
accede all’utente corrente e questo è
in realtà è davvero facile da fare perché tu
può sempre accedere all’utente corrente di
cercandolo c’è un metodo per questo
e il modo in cui funziona per quelli di
in realtà ne sai qualcosa
java è che l’utente corrente è sempre
memorizzato in una variabile locale del thread chiamata
il contesto di sicurezza, quindi cosa possiamo fare
possiamo cercare questa autenticazione
oggetto da lì e poi nel
autenticazione troveremo un utente che
potrebbe essere qualsiasi tipo di oggetto che tu
hai definito come utente nel tuo
il sistema che porta sicurezza è carino
flessibile in questo e tu puoi trovarne alcuni
altre cose, così come il nome e
le attuali autorità che erano
assegnato a questo particolare utente e tu
può fare ogni sorta di cose con questo così
solo alcuni rapidi esempi del perché tu
potrebbe voler usare questo ovviamente per
personalizzato o diritto di autorizzazione forse tu
avere qualche controllo di sicurezza personalizzato e tu
non è possibile implementarlo facilmente con
qualcosa ti ho già mostrato bene
implementalo tu stesso e scrivi il codice
che si collega a tutti i luoghi in cui
devi avere quell’assegno ma un altro
uno è per dire che voglio essere sicuro
che non appena ho un utente registrato
Potrò metterlo nell’output
della mia registrazione in modo da poter sempre vedere
quale utente è per conto di quale utente noi
stavamo cercando di fare qualcosa quando noi
emettere un estratto del registro che è davvero
cosa comune da fare anche se sei in un
sistema multi-tenant in modo da avere più
organizzazioni con i propri utenti e
i loro dati sono in realtà davvero
conveniente se si può sempre accedere al
attuali inquilini così si potrebbe desiderare di
estrailo dall’attuale utente e
rendilo disponibile alla tua applicazione
in qualche modo puoi popolare automaticamente le cose
proprio come le colonne del database in realtà
usando altre strutture primaverili lo farai
essere in grado di farlo automaticamente ma
questo ti permetterà di vedere ogni volta
il cambiamento è stato fatto per un certo pezzo
di dati non solo quando è successo ma
anche da chi è stato fatto potresti farlo
certo, perché di default questa cosa
è memorizzato in un thread se in realtà
avrò thread di lavoro che fanno gli altri
cose in modo asincrono ma tu vuoi ancora
sapere per conto di quale utente
succede che puoi effettivamente propagare
gli appaltatori della sicurezza tonnellate e tonnellate
di ragioni per l’accesso programmatico
quindi usalo se necessario e basta
sicuro di non iniziare a mescolare
codice di sicurezza con tutti i tuoi regolari
codice di logica aziendale perché il tutto
punto del quadro è in realtà
impedire di di dover fare
in primo luogo, quindi vediamo rapidamente
come stiamo andando in orario qui va bene e
Salterò questo qui c’è il supporto
per qualcosa chiamato controllo di accesso
elenca ora ti mostrerò la prima diapositiva
per questo l’idea alla base di un accesso
elenco di controllo è che stai andando a
avere vincoli di sicurezza che sono
completamente definito direttamente su un oggetto
che vuoi proteggere in modo che stiano andando
essere completamente fuori dal tuo solito
i file system logici dell’applicazione sono a
bene un buon esempio di questo dove per
file Posso effettivamente dire cosa hanno gli utenti
che tipo di permessi su questo
file particolare e potrebbero
in realtà ereditarlo da una directory
ecc. ecc. è un esempio di accesso
controllo con cui puoi farlo
sprang cosa di sicurezza è questo non è
necessario nella mia esperienza per la maggior parte
applicazioni come ho detto all’inizio
puoi fidarti di me quindi se dico che non lo è
in realtà era necessario che noi non lo facessimo
in realtà deve coprire il supporto per
questo quindi alcune altre preoccupazioni puoi anche
dire sprang sicurezza oh ogni volta a
la richiesta arriva e alcuni piatti sono chiari
HTTP imponi l’HTTP sicuro
reindirizzare quindi è chiamato sicuro
supporto del canale un HTTPS è importante
anche se in realtà non si preoccupano
i dati nella tua applicazione che potresti
avere qualcosa come un sito pubblico tu
in realtà non hai nulla di cui hai bisogno
proteggere in modo da sentire che va bene fare
è semplicemente HTTP , probabilmente no
perché è ancora un semplice HTTP ancora
ti dà la possibilità che un
l’utente malintenzionato potrebbe effettivamente essere in grado di farlo
intercettare cose e risposte per
esempio e serve contenuti dannosi
come forse la versione malevola di jQuery
che serviremo come
JavaScript in modo HTTPS Everywhere è in
Infatti una buona idea
anche se i tuoi stessi dati non sono il
cosa su cui stai cercando di proteggere
l’altra mano ancora come con il
Intestazione HST HD questo è qualcosa che
potresti considerare di inserire nel tuo web
server o bilanciamento del carico o
invece di farlo nella tua applicazione
livello c’è il supporto per limitare
sessioni di copertura vedendo quanto spesso a
l’utente può effettivamente accedere in parallelo
con lo stesso account che è
particolarmente interessante se lo sei
ricarica per i tuoi contenuti e avere a
paywall
giusto non vuoi veramente il tuo
abbonamento che l’utente acquista per essere
condiviso con l’intero amico e la famiglia
e il quartiere è integrato
supporto per limitare la quantità di
login simultanei puoi persino farlo
anche un cluster e infine una cosa
Volevo controllare quanti di voi sono
memorizzando effettivamente gli utenti nel proprio
database dell’applicazione con il loro hash
password che è un numero considerevole
di gente che è anche la mia esperienza è
in realtà abbastanza comune per farlo ora
probabilmente sapete già che al fine di
fai questo non dovresti memorizzare testo in chiaro
password che dovresti usare hash cosa io
vedo comunque molte persone
copierò solo come i blog di dieci anni
che ti consiglia di usare qualcosa di simile
md5 o sha-1 erano destinati alla conservazione
le password forse per renderle più sicure
stai aggiungendo un pozzo di sale che posso dirti
una cosa se stai effettivamente memorizzando
le tue password usando md5 con il sale
si potrebbe anche appena memorizzato in chiaro
testo persone giuste con GPU based
hardware possono effettivamente fare un bruto
forza su questo cercando milioni e
milioni di password al secondo e loro
sarà in grado di rompere la maggior parte delle tue
password davvero in pochissimo tempo quindi assicuratevi
che stai usando un algoritmo che era
effettivamente inteso per le password di hashing
e la sicurezza di primavera ha il supporto per questo
fuori dalla scatola
Salterò questo così per concludere
in fondo quello che stai vedendo è quello
con una struttura come la sicurezza di primavera
puoi gestire la sicurezza a molti
diversi livelli nell’applicazione e
in realtà è importante pensare
tutti questi diversi livelli, giusto
la sicurezza non è qualcosa che tu
implementare in un posto e il gioco è fatto
hai bisogno di pensare a queste cose così
per farlo quando in realtà
fai così scoprirai di avere molto
più di un approccio approfondito alla difesa ora
questa è solo difesa in profondità al
livello di applicazione, ma se sei in realtà
frequentare la pista oggi
completamente alla fine della giornata lo farai
ho anche un po ‘più di un’idea di cosa
significa avere una difesa in profondità affatto
degli strati giusti, comprese le cose
come la rete del sistema operativo e il tuo
Dockers e tale, ma trovo che
spesso le persone si dimenticano di farlo
pensa all’applicazione stessa così
è davvero importante che tu lo sia
usando qualsiasi framework di sicurezza che tu
sai cosa fa per te come funziona
ma anche quello che fa di default come me
ha spiegato che ci sono alcuni reali
impostazioni predefinite pericolose che potrebbero impedire
la tua applicazione o altre applicazioni
in esecuzione nello stesso dominio dal lavoro
correttamente quindi assicurati di aver letto
su questo e su quello almeno una persona su
la tua squadra sa davvero un po ‘
su cosa stai facendo e poi forse
bene potresti diventare inaccessibile o a
Almeno si può dare la colpa a qualcun altro in
quell’intero stack di sicurezza per l’avvitamento
e non sarai tu come un’applicazione
consegna così così grazie
per la partecipazione e abbiamo tempo per
domande okay

Please follow and like us: