Fenomeno85
29-06-2008, 13:17
Allora ho da fare un esame e dentro ci può essere sql injection. Solo che non capisco cosa fare.
Esempi:
a) una applicazione web in html in cui è presente una form che consente di inviare una email con contenuto generico (textfield) a un indirizzo inserito dall'utente (user_address). Questo indirizzo deve essere tra quelli presenti in una tabella autorizzata. Prima di inviare si esegue
select count(*)
from ValidAddressTable
where address = ' + user_address + '
1) illustrare il modo di manipolare il sistema per inviare una mail a un indirizzo arbitrario
2) illustrare come si può rendere più sicura l'applicazione
Se mando dentro user_address = ' 1or1
il count dovrei averlo bypassato .. ma poi come faccio a mettere dentro l'indirizzo che voglio?
b)applicazione per il login:
select count(*)
from user
where pwd='+ stringa_pwd + ' and login = ' + stringa_login + '
1) come violare la sicurezza dando un esempio
2) cosa cambirebbe se ci fosse invece un controllo sul fatto che il risultato dell'istruzione sia esattamente pari a 1?
3) cosa si deve fare per proteggere l'applicazione?
4) sulla query di partenza, si riesce a leggere dati da una tabella con lo stesso numero di colonne della tabella user? se si come?
5) cosa si deve fare per eliminare questo problema?
Soluzione mia:
1) metto string_pwd = ' 1 or 1 '--
3) la modifica sarebbe di controllare che non ci siano '-- o altri comandi sql
Qualcuno mi spiega come si fanno ste cose?
~§~ Sempre E Solo Lei ~§~
Esempi:
a) una applicazione web in html in cui è presente una form che consente di inviare una email con contenuto generico (textfield) a un indirizzo inserito dall'utente (user_address). Questo indirizzo deve essere tra quelli presenti in una tabella autorizzata. Prima di inviare si esegue
select count(*)
from ValidAddressTable
where address = ' + user_address + '
1) illustrare il modo di manipolare il sistema per inviare una mail a un indirizzo arbitrario
2) illustrare come si può rendere più sicura l'applicazione
Se mando dentro user_address = ' 1or1
il count dovrei averlo bypassato .. ma poi come faccio a mettere dentro l'indirizzo che voglio?
b)applicazione per il login:
select count(*)
from user
where pwd='+ stringa_pwd + ' and login = ' + stringa_login + '
1) come violare la sicurezza dando un esempio
2) cosa cambirebbe se ci fosse invece un controllo sul fatto che il risultato dell'istruzione sia esattamente pari a 1?
3) cosa si deve fare per proteggere l'applicazione?
4) sulla query di partenza, si riesce a leggere dati da una tabella con lo stesso numero di colonne della tabella user? se si come?
5) cosa si deve fare per eliminare questo problema?
Soluzione mia:
1) metto string_pwd = ' 1 or 1 '--
3) la modifica sarebbe di controllare che non ci siano '-- o altri comandi sql
Qualcuno mi spiega come si fanno ste cose?
~§~ Sempre E Solo Lei ~§~