Newsgroup: it.comp.www.asp
Titolo: Problema sicurezza con i form ed ASP

Il problema e' piuttosto semplice:
supponiamo che ci sia una pagina form.asp che visualizza un form, ed
una pagina formAction.asp che viene richiamata dal SUBMIT per la
gestione del form stesso.
Supponiamo che, nella pagina html prodotta da form.asp ci sia un campo
a tendina, con due opzioni tra cui scegliere.
Supponiamo che un utente furbetto, si scarichi la pagina html prodotta
sul desktop e la modifichi, aggiungendo una terza opzione che, io,
nella pagina form.asp avevo escluso per quell'utente.
Supponiamo poi che carichi nel suo browser la pagina cosi' modificata,
selezioni la terza opzione e poi spedisca il form.
Se la pagina formAction.asp non fa qualche controllo specifico,
fidandosi di quanto prodotto da form.asp, andra' ad aggiornare un
campo di database con un valore non ammesso.
Ogni tanto questo tipo di problema mi si propone e, di volta in volta,
risolvo aggiungendo controlli nella pagina di gestione dei dati del
form, ma questi (spesso pesanti) non sarebbero necessari se si avesse
la garanzia che l'utente non possa modificare il codice html prodotto.
Ho analizzato le server variables, ma quelle che potrei usare, si
basano sulle intestazioni http, che, secondo me, potrebbero essere
modificate da un utente sveglio (visto che partono dal browser).
L'unica idea che mi e' venuta, e' una funzione hash che "firmi" la
pagina html prodotta, ma non ho mai sentito nulla di simile per asp.
Insomma, ogni suggerimento sara' apprezzatissimo.
Ciao!!
Glauco
www.serate.it
www.curiamo.com
www.comperiamo.com

Una soluzione potrebbe essere quella di caricare i campi della combobox
all'interno del DB, in modo che la combo viene caricata in base ai recod
presenti nel DB, in questo modo nell'altra pagina verifichi prima di tutto
l'esistenza di quel record, e nel caso in cui sia inesistente gli potrai
tornare qualche errore.
Saluti
--
Lino Mari
Intermedia srl
http://www.intermedia2000.com

tornare qualche errore.
Grazie Lino,
effettivamente, aggiungendo controlli nella pagina cui rimanda il
form, il problema si puo' risolvere (ad esempio rieseguendo lo stesso
codice che, nel form, aveva alimentato la tendina).
Mi chiedevo se esistesse un metodo generale che impedisse all'utente
di "barare", modificando l'html del form.
Glauco
www.serate.it
www.curiamo.com
www.comperiamo.com

Penso che un sistema che blocchi direttamente l'html non esista.
Un altro controllo potrebbe essere questo:
Controllare l'url di provenenza... in questo modo chiunque modifica una
pagina html...per lanciarla dovrà inserirla in un web non tuo, altrimenti
vuol dire che ti hanno crakkato il sito!
Che ne dici?



Moderatore di it.comp.www.asp
Sito di supporto: 
http://www.aspitalia.com/newsgroup/
La più grande community italiana di sviluppatori!

ciao,
mi trovo anch'io con un problema simile, per fortuna un po più semplice:
Io ho di partenza la lista degli utenti registrati, ho creato una nuova
pagina, in cui devono entrare esclusivamente gli utenti registrati e
inoltre essi devono entrare da un unica pagina di provenienza in cui
effettuo il controllo della password ecc...
Vi chiederei: come funziona il controllo dell'URL della pagina di partenza
e inoltre secondo voi conviene utilizzare questa strada (sono venuto a
conoscenza di questa possibilità leggendo il vostro discorso) ho conoscete
altri modi per creare parti di Web protette?
Vi ringrazio per la collaborazione io sono nuovissimo del mestiere non so
veramente come fare!
ciao
Diego
-- 
Posted from 
old-n3.infonet.com
 [192.157.130.44] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

Che ne dici?
Purtroppo questa informazione viaggia negli header http, e immagino
sia possibile modificarla. Non conoscevo i software a cui fa
riferimento Daniele nell'altro messaggio, ma immaginavo che esistesse
qualcosa del genere.
Secondo me, diversi siti sottovalutano questo problema di sicurezza,
facendo affidamento sul fatto che l'utente non manipoli il codice dei
form prodotti.
Ciao!
Glauco
www.serate.it
www.curiamo.com
www.comperiamo.com

In parole povere siamo tutti fregati...
Anche se penso che ad ogni servizio corrisponda un grado di sicurezza, nel
senso che fregare un gateway SMS ha il suo tornaconto, ma aggirare delle
form per far comparire qualche stringa diversa o che generi un errore, non
so a cosa potrebbe servire. In un sito di e-commerce modificare p.e. un
prodotto o le quantità richieste per cercare di frodare l'esercente non ha
nessun tornaconto se non quello di farsi rifiutare l'ordine.


 nessun tornaconto se non quello di farsi rifiutare l'ordine.
certo, chiaro che nel 70% dei casi se ti inseriscono 
q.sa
 di diverso, al
massimo lo cancelli a mano ;-)
però ci sono casi in cui non puoi prescindere da un certo grado di
sicurezza, ed allora è bene, per es, verificare da che dominio proviene la
richiesta, da che IP, quale sia l'HTTP_REFERER, il browser type, etc.
in genere un robot, per quanto scritto bene, non è esattamente uguale ad un
browser, ovvero si perde per la strada certi tipi di headers... ed è lì che
bisogna fregarlo ;-)


Non sarebbe sufficiente prelevare i dati da inserire nella combo da un
tabella ed utilizzare un vincolo di Foreign Key che li lega alla tabella di
destinazione ad essa?

Ho seguito il vostro discorso che reputo molto interessante.
In questi giorni mi sono trovato con il medesimo problema, e mi e'
venuta la curiositą di andare a rompere le scatole a molti siti web di
societą importanti.
Risultato? Tutti i siti da me testati (ovviamente che lavorano con il
passaggio di dati tramite URL) sono entrati in errore di accesso a
Recordset nei Database (ovviamente!!!)
Ora sono costretto a digitare codice di controllo e modificare qualche
paginetta.
Approfitto per augurarvi buonlavoro.
Ciao...

 ha scritto nel messaggio
news:935cf8$tj8$1...@lacerta.tiscalinet.it...

se le opzioni sono controllabili, ma se non lo sono?
tipo, se passi il numero di prodotti nel carrello, o uno sconto, o altre
cose che in un database non puoi tenere?


 Recordset nei Database (ovviamente!!!)
certo, la maggior parte dei sistemi che trovi in giro per il web hanno costi
da 9 cifre, ma funzionano come sistemi da pagare meno di zero ;-)
impallare un web server in questo modo è davvero semplice, e poi dicono che
NT è poco sicuro... è perchè molte volte in mano ce l'hanno degli
incompetenti...


destinazione ad essa?
Quando e' possibile, certo. Pero' ci sono casi in cui devi mettere
nella drop list un sottoinsieme dei valori legati in foreign key (ad
esempio, in un web store, ciascun negoziante deve poter modificare
soltanto gli articoli del suo negozio: sicuramente poni il vincolo
della foreign key, ma non e' sufficiente).
Probabilmente, utilizzando database con trigger si possono spostare
gran parte dei controlli sul database (ma dubito si possa con tutti).
Glauco
www.serate.it
www.curiamo.com
www.comperiamo.com