Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti
Dopo alcuni anni di assenza dai cataloghi dei suoi televisori, Hisense riporta sul mercato una proposta OLED che punta tutto sul rapporto qualità prezzo. Hisense 55A85N è un televisore completo e versatile che riesce a convincere anche senza raggiungere le vette di televisori di altra fascia (e altro prezzo)
Recensione Borderlands 4, tra divertimento e problemi tecnici
Recensione Borderlands 4, tra divertimento e problemi tecnici
Gearbox Software rilancia la saga con Borderlands 4, ora disponibile su PS5, Xbox Series X|S e PC. Tra le novità spiccano nuove abilità di movimento, un pianeta inedito da esplorare e una campagna che lascia al giocatore piena libertà di approccio
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale
NXTPAPER 60 Ultra è il primo smartphone con tecnologia NXTPAPER 4.0 per il display, un ampio IPS da 7,2 pollici. Con finitura anti-riflesso, processore MediaTek Dimensity 7400, fotocamera periscopica e modalità Max Ink per il detox digitale, NXTPAPER 60 Ultra punta a essere il riferimento tra gli smartphone pensati per il benessere degli occhi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-03-2008, 16:41   #1
simo6784
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 6
[JavaScript] Problema sicurezza applicativi WEB e tabs browser !!

CIao,

ho notato un problema con i tabs di qualsiasi browser
mi spiego meglio...
... se sviluppiamo un applicativo in ASP ad esempio con un aria di login e delle variabili di sessione per gestirne l'accesso e iMMAginiamo di avere del codice javascript ad esempio all'interno di una procedura per modificare determinati dati (es un anagrafica).. .. volendo un utente malintenzionato potrebbe salvarsi la pagina html in locale ... modificarne il codice javascript di qualche funzione o anche qualche campo hidden o text di una form... aprire in un altro tab del browser la pagina modificata per non perdere i valori di sessione che controllano se è effettivamente loggato al sistema e bypassare così eventuali controlli.... mi sembra una cosa abbastanza grave .... oppure esiste qualche trucchetto per evitare che avvenga e mi sto perdendo in un bicchier d'acqua ?!!!
mi intimorisce il fatto che se apro un tab del browser riesco a caricare una pagina HTML che mantiene validi i valori di sessione di un altro tab... voi che ne dite ?!!

grazie



Simone
simo6784 è offline   Rispondi citando il messaggio o parte di esso
Old 13-03-2008, 19:45   #2
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Giusta osservazione, che puo' pero' derivare da un approccio sbagliato.
Non deve esserci nulla, nella pagina, che serve al "server" per identificare chi e' che sta facendo le operazioni.
Non si deve salvare la "login" nella pagina per poi rimandarla al server quando si devono fare le operazioni.
Le variabili di stato come queste, soprattutto queste, devono rimanere come variabili di sessione nel server.
E fin qui mi sembra di aver capito che da quello che hai scritto ci sei.

Il resto dellla logica di controllo deve essere messo tutto sul server, non sulla UI del client.
Che l'utente abbia scritto "Nome e cognome" sulla mia form, oppure su una sua form, nulla dovrebbe cambiare.
Se si fanno gli applicativi bene, ovvero se si disegna un buon modello dati, un buon servizio che interagisce con il database (tipicamente web service), poi ci potro' attaccare una qualsiasi UI, sia che sia una pagina ASP.net, sia che sia un'applicazione WinForm, sia che sia un'applicazione pinco pallo che l'utente ha voluto crearsi da se' per chissa' quale motivo.

L'intelligenza nel caso da me menzionato (classico) dovra' stare sul web-service. Ogni funzione esposta dovra' controllare la validita' dei dati passati, la possibilita' che quell'utente possa averli scritti, la possibilita' di usare la funzione stessa, etc.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 01:28   #3
DioBrando
Senior Member
 
Iscritto dal: Jan 2003
Città: Milano - Udine
Messaggi: 9418
Quote:
Originariamente inviato da simo6784 Guarda i messaggi
CIao,

ho notato un problema con i tabs di qualsiasi browser
mi spiego meglio...
... se sviluppiamo un applicativo in ASP ad esempio con un aria di login e delle variabili di sessione per gestirne l'accesso e iMMAginiamo di avere del codice javascript ad esempio all'interno di una procedura per modificare determinati dati (es un anagrafica).. .. volendo un utente malintenzionato potrebbe salvarsi la pagina html in locale ... modificarne il codice javascript di qualche funzione o anche qualche campo hidden o text di una form... aprire in un altro tab del browser la pagina modificata per non perdere i valori di sessione che controllano se è effettivamente loggato al sistema e bypassare così eventuali controlli.... mi sembra una cosa abbastanza grave .... oppure esiste qualche trucchetto per evitare che avvenga e mi sto perdendo in un bicchier d'acqua ?!!!
La parte di validazione deve sempre stare sul lato server, solitamente gestita dall'ApplicationServer (a seconda poi chiaramente di come sia la struttura su cui andrete a implementare, se 1/2/3tier ecc.).
In questo modo anche salvando la pagina HTML che sarà l'output risultante dalla richiesta fatta lato client nel momento in cui l'utente andrà ad effettuare il login, sulla pagina HTML stessa (per meglio dire nel codice della pagina) non ci sarà alcuna traccia della coppia di dati sensibili utilizzati (login e password), proprio perchè l'autenticazione avviene lato server e la pagina HTML è già di per sè il prodotto di quell'autenticazione.

Gli script che vorrete utilizzare ( e che io solitamente consiglio di ridurre al minimo per un discorso di accessibilità) serviranno, qualora servissero, ad altro e saranno slegati dalla logica di cui sopra.

Quote:
mi intimorisce il fatto che se apro un tab del browser riesco a caricare una pagina HTML che mantiene validi i valori di sessione di un altro tab... voi che ne dite ?!!

grazie



Simone
Solitamente non è il tab o non tab a fare la differenza.
Una volta che ti sei autenticato, se tu apri una finestra dello stesso browser, resti autenticato per effetto del meccanismo di sessione (tramite cookie) che ogni sito utilizza.
In base poi alle policy che variano dalle scelte fatte a monte da parte dell'amministratore, la sessione dopo tot minuti di inattività scade e l'utente deve ripetere la procedura di login.
Ma non cambia niente che tu operi con tab +ttosto che finestre.
Logicamente devi lavorare nel medesimo ambiente (browser) altrimenti il meccanismo dei cookie non funziona.
Se parti con Firefox, ti autentichi e poi provi a navigare con Opera è chiaro che il discorso non funzioni, ma anche qui l'utilizzo dei tab non c'entra nulla.


*pardon non avevo refreshato dal pomeriggio e non mi sn accorto della precedente risposta di gugo...spero di nn aver scritto un doppione
DioBrando è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 08:12   #4
simo6784
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 6
ok, grazie ragazzi... quindi il tutto dipende da una logica durante la fase dello sviluppo del software...
probabilmente una tecnologia cme ASPx è più sicura rispetto ad ASP(ma anche qui pensando le cose per benino si potrebbe risolvere il problema).

grazie

S.
simo6784 è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 09:18   #5
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Per queste cose, se non se può proprio fare a meno, si usa una one-time password.
Ad esempio un md5 della concatenazione fra nomeutente-password-data_ora-numero_casuale.
La one-time password deve essere memorizzata nella sessione e data in pasto anche al JavaScript. Al momento in cui si riceve la richiesta tramite JavaScript svolgiamo la verifica della one-time password e la eliminiamo dalla sessione.
In questo modo non sarà possibile ad esempio svolgere due volte la stessa operazione o fare operazioni diverse con la stessa one-time password (la one-time password viene invalidata dopo la prima).
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 10:29   #6
simo6784
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 6
dunque vediamo se ho capito...
... a questo punto il codice andrebbe creato lato client (immaginiamo che il codice venga generato da un timestamp di una funzione javascript+usr così è sempre diverso anche quando lo ricarico lato client) con javascript ed inviato subito al server che lo memorizza in una variabile di sessione.
Alla successiva richiesta si manda il codice generato lato client che se nel frattempo è stato ricaricato in locale con il trucco che dicevo sopra dovrebbe essere diverso da quello sul server e sarebbe dunque possibile bloccare la pagina...
Ovviamente ad ogni richiesta al server bisogna verificare se il codice session esiste già ... nel caso esiste ed è diverso o nullo allora posso bloccare tutto .. altrimenti è la prima richiesta e comincio il giro...

ho capito bene ?!!!
simo6784 è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 10:45   #7
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
No il codice lo devi creare lato server e salvare nella sessione, poi dopo lo devi poi "stampare" all'interno del codice Javascript che lo deve usare.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 10:50   #8
simo6784
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 6
ok ... ma così mi ritrovo con lo stesso problema !!
poiche lato client il codice chiave creato anche se in MD5 è comunque visibile e se uno si copia l'HTML , lo modifica senza toccare quel codice è perfettamente in grado di riaprirlo in un altro tab e mantenere la pagina valida... come se non fosse stata modificata perchè non c'è un altra chiamata al server...
simo6784 è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 10:54   #9
simo6784
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 6
.. e poi stavo pensando anche a quelle estensioni che hanno browser come firefox che permettono di modificare il codice html e javascript senza neanche aprire un altro tab...

questo è ancora più pericoloso ... si potrebbe inibire un controllo javascript in un batter d'occhio...
simo6784 è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 10:56   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da simo6784 Guarda i messaggi
ok ... ma così mi ritrovo con lo stesso problema !!
poiche lato client il codice chiave creato anche se in MD5 è comunque visibile e se uno si copia l'HTML , lo modifica senza toccare quel codice è perfettamente in grado di riaprirlo in un altro tab e mantenere la pagina valida... come se non fosse stata modificata perchè non c'è un altra chiamata al server...
No...perché è una one-time password...cioè è valida solo per una operazione, appena questa viene effettuata il codice viene invalidato rimuovendolo dalla sessione.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 11:07   #11
simo6784
Junior Member
 
Iscritto dal: Mar 2008
Messaggi: 6
.. ma se la mofica al codice viene effettuata prima di quella operazione ?!! ...
scusa ma non risco a capire il discorso di questa one-time-psw ... mi sembra efficace solo se il submit della pagina è già avvenuto... ma se devo ancora farlo e prima di cliccare sul pulsantino SUBMIT vado a modificare del codice che effettua determinati controlli non corro il rischio cmq di bypassare qualche funzione ?!!!
IL codice ricaricato nel tab non viene dal server ma dalla pagina che ho già ricevuto e della quale mi sono salvato l'HTML in locale e che quindi sarà identica nel codice client (eccetto per le funzioni che vado a modificare) ricevuto e dunque con la chiave valida ... dopodichè dalla pagina del tab (che continua ad avere la sessione attiva..quindi non posso buttare fuori l'utente con la scusa SESSIONE SCADUTA) lancio il submit della form che nel metodo action punterà al server ed il gioco è fatto.

...forse non ho capito bene il discorso della one time psw ... ma mi sembra efficace solo in determinate circostanze...

..in che senso viene invalidato rimuovendolo dalla sessione ?!
simo6784 è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 11:41   #12
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Il metodo della one-time password puo' servirti per esempio per aggirare il problema delle variabili di sessione, ovvero quando stai utilizzando tecnologie session-less, quando non vuoi o quando il tuo server non puo' (o non ti permette) di usare le variabili di sessione.

Quote:
Originariamente inviato da simo6784 Guarda i messaggi
scusa ma non risco a capire il discorso di questa one-time-psw ... mi sembra efficace solo se il submit della pagina è già avvenuto... ma se devo ancora farlo e prima di cliccare sul pulsantino SUBMIT vado a modificare del codice che effettua determinati controlli non corro il rischio cmq di bypassare qualche funzione ?!!!
Questo e' il punto.
NON e' il codice javascript che deve fare i controlli (presentation layer). Puoi bypassare qualunque funzione del javascript, ma e' il server che deve fare i controlli (business o logic layer), prima di agire e "servire" l'operazione richiesta.

Es: Ipotizza di fare un sito che permette la prenotazione dei voli aerei di una determinata compagnia.
Non si vuole che un cliente di una nazione possa prenotare un volo in partenza da un aeroporto che non e' di quella nazione.

Sul sito, in javascript, presentero' a ciascun utente solo gli aeroporti della propria nazione, cosicche' lui possa scegleire comodamente solo parametri gia' permessi.
In questo modo l'utente verra' guidato dalla UI nelle sue scelte, e non ricevera' messaggi di errore.

MA il codice di controllo deve essere sul server. E' il server che quando riceve la notifica di prenotazione deve controllare se l'aeroporto di partenza e' uno di quelli validi. NON ci si puo' fidare di cio' che e' arrivato dalla richiesta.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 14-03-2008 alle 11:46.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 14-03-2008, 16:59   #13
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da simo6784 Guarda i messaggi
.. ma se la mofica al codice viene effettuata prima di quella operazione ?!! ...
scusa ma non risco a capire il discorso di questa one-time-psw ... mi sembra efficace solo se il submit della pagina è già avvenuto... ma se devo ancora farlo e prima di cliccare sul pulsantino SUBMIT vado a modificare del codice che effettua determinati controlli non corro il rischio cmq di bypassare qualche funzione ?!!!
Come ho scritto prima il metodo che ti ho spiegato serve per evitare che possa ricevere due richieste diverse, chiaro che se vado a modificare il codice i dati ricevuti devono essere validati a mano.
Il metodo che ti ho spiegato è fondamentale ad esempio quando:
- viene premuto due volte il tasto di conferma
- viene modificata una pagina dopo che la prima form è stata inviata
Per validare i dati ti devi comunque memorizzare l'elaborazione intermedia nelle variaibili di sessione. Se una procedura è composta da diversi passi, ad ogni passo dovrò memorizzare nella sessione i dati che compongono l'output dato all'utente. In questo modo se l'utente modifica la pagina, quando ricevo la richiesta i dati non corrispondono più con quelli che avevo memorizzato e mi accorgo della modifica.
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Hisense A85N: il ritorno all’OLED è convincente e alla portata di tutti Hisense A85N: il ritorno all’OLED è convi...
Recensione Borderlands 4, tra divertimento e problemi tecnici Recensione Borderlands 4, tra divertimento e pro...
TCL NXTPAPER 60 Ultra: lo smartphone che trasforma la lettura da digitale a naturale TCL NXTPAPER 60 Ultra: lo smartphone che trasfor...
Un fulmine sulla scrivania, Corsair Sabre v2 Pro ridefinisce la velocità nel gaming Un fulmine sulla scrivania, Corsair Sabre v2 Pro...
Nokia Innovation Day 2025: l’Europa ha bisogno di campioni nelle telecomunicazioni Nokia Innovation Day 2025: l’Europa ha bisogno d...
Nuove regole per l'AI di Meta: niente co...
iPhone 16 in Bianco e altri 2 colori a s...
Microsoft rimuove il blocco dell'aggiorn...
TikTok 'MAGA al 100%': Trump vuole modif...
Stuttering e freeze sui laptop da 3.000 ...
Government Data Intelligence for Agricul...
iPhone 17e limitato per non oscurare iPh...
Windows 11 può usare l'IA per cla...
Microsoft Edge diventa più sicuro...
Yakuza Kiwami 3: il nuovo trailer mostra...
Geely lo fa davvero: auto con garanzia a...
'Troppi videogiochi': ecco perché...
Videogiochi e TV aumentano la concentraz...
OneXFly Apex è la console portati...
Dati impressionanti: le auto autonome di...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:21.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v