Passaggio di parametri nascosto tra pagine

giovedì 10 novembre 2005 - 13.44

Bloody Profilo | Newbie

Ciao, è da qualche giorno che sbatto la testa su un problema che più che di codice mi pare algoritmico, nel senso che non riesco a trovare il MODO di farlo, tenendo conto anche della mia scarsa esperienza con .net .

Ho una tabella in un db mysql chiamata messaggio(id,contenuto) e una serie di textbox generate dinamicamente, una per messaggio, che si chiamano come il suo id univoco.

Ad ogni textbox affianco un link a una pagina details, che ha bisogno di conoscere l'id del messaggio.
Non posso passarglielo con get, perchè l'id del messaggio non voglio che sia visibile, pena sql injection e rischi di sicurezza, visto che non tutti gli utenti possono vedere tutti i messaggi.

Pensavo di fare un linkbutton al cui click viene chiamato un metodo interno tipo showdetails(int idmsg) che memorizza nelle variabili di sessione l'id e poi lo passa alla pagina desiderata, però non viene riconosciuto, essendo il linkbutton non ancora fisicamente generato.
E' possibile creare un eventhandler che gestisca tutti i click di un certo tipo? (per esempio, al click di ogni linkbutton che inizia per "det" chiama questo metodo)

Se qualcuno ha soluzioni alternative, o anche solo un suggerimento di una possibile struttura dati da usare.. è ben accetto!!

Brainkiller Profilo | Guru

Tu che sviluppatore devi preoccuparti anche di gestire in modo corretto la security.

Tanto per cominciare è utile scrviere le proprie applicazioni usando Stored Procedure che ti consentono di eliminare quasi totalmente il rischio SQL Injection. Seconda analisi, crea degli utenti e/o ruoli su MySQL che abbiano diritti minimi sulle tabelle in questo modo nessuno con una potenziale SQL Injection potrà farti dei DROP TABLE o lanciare altri comandi distruttivi. Terzo, puoi usare tranquillamente in questo caso ilpassaggio di un ID tramite Get. Perchè tu nella pagina successiva fai una cosa di questo tipo:

Scrivo in C# per comodità ma è per farti capire il concetto:

try
{

int k=int.Parse(Request["ID"].ToString();

} catch (Exception ex)
{
Console.WriteLine("E stato inserito qualcolsa che non è un numero");
}

Cosa succede ? Se qualcuno ti mette qualcosa diverso da un numero tentando un attacco di SQL Injection, fallirà sicuramente.

Insomma, vedi che con alcune tecniche:
- Stored Procedure
- Ruoli, utenti e security
- Verifica degli Input
ti trovi ad avere una applicazione ben più sicura rispetto a prima.

Ricordo che Stored Procedure solo se usi MySQL 5.0
Ciao

David De Giacomi
Microsoft MVP
http://blogs.dotnethell.it/david/

Bloody Profilo | Newbie

grazie x le info, ho cmq risolto creando un linkbutton per ogni textbox a runtime, il cui ID è l'id del messaggio che mi serve; all'evento che corrisponde al click di quel linkbutton, memorizzo l'id in un'apposita variabile di sessione e poi faccio redirect all'altra pagina, che può recuperare il valore dalla sessione.

thanks anyway delle dritte! ;)

Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2023
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5