3 messaggi dal 29 giugno 2014
Buon giorno premetto di essere un neofita in materia.. E forse la domanda può essere banale ma non sono riuscito a trovare una soluzione.. Supponiamo di accedere a una webform tramite una query string con dei parametri che permettono di visualizzare alcuni dati. Dopo il primo utilizzo vorrei fare in modo che quella query string non funzioni più. Ho letto che una soluzione è quella di settare un determinato valore nel database così da fare in modo che con quei parametri si ottenga un risultato di ricerca vuoto sul database. Ma così sarebbe perennemente interrogato il database .. Un idea potrebbe essere quella di inserire un parametro che cerchi il nome di un file temporaneo salvato in una directory del server. Al caricamento della pagina o prima? Se il file esiste proseguo con la visita del sito e automaticamente cancello il file. La volta successiva non trovando il file il parametro in request query string risulterà nullo e quindi vengo reindirizzato altrove... Che problemi di sicurezza potrei avere così Facendo? Ci sono altre soluzioni? Il vostro libro asp.net tratta di queste cose? Grazie in anticipo per chi vorrà rispondermi.
Ciao,
non ho ben capito.
Dalla parola webform immagino che stai usando Webforms e non MVC. Corretto?
Supponiamo una pagina con dei filtri di ricerca e una lista di risultati.
Al caricamento della pagina usi i parametri nell'url e visualizzi subito i risultati. Poi?
Cerca di spiegare cosa intendi con "Dopo il primo utilizzo" e cosa sottointendi per secondo utilizzo :)

Molto probabilmente ti stai riferendo al meccanismo del PostBack:
https://msdn.microsoft.com/it-it/library/system.web.ui.page.ispostback(v=vs.110).aspx

Ormai programmano tutti... ma la professionalità appartiene a pochi
3 messaggi dal 29 giugno 2014
Ciao, grazie per la risposta.. Scusa se sono stato poco chiaro.
l'idea è questa:
mando un link via mail con una query string

www.prova.com/default.aspx?param=c:/users/daniele/desktop/file.mio_ciao

Da questa ricavo 2 parametri. Uno è il path del file.mio e l'altro è ciao, che uso
ad esempio come paramentro per filtrare una query.

Ora se chi possiede il link lo clicca 1000 volte, ci saranno 1000 interrogazini
al database. Se io volessi fare in modo che con quella query string non
avvengano più interrogazioni al database, come potrei fare? (lasciando a parte
il discorso autenticazione).
L'idea che mi è venuta in mente è questa:

public partial class WebForm1 : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
string v = Request.QueryString["param"];
if (v != null)
{
//ricavo i due parametri
string[] split = v.Split('_');
v = split[0];
string z = split[1];

if (File.Exists(v))
{
//eseguo la query.. in questo caso scrivo ciao..
// de elimino il file
Response.Write(z);
File.Delete(v);
}
else
{
Response.Redirect("xx");
}

}
else
{
Response.Redirect("xx");
}
}
}

creo praticamente un file temporaneo. Se questo esiste procedo con
l'interrogazione al database altrimenti stoppo tutto...
Alla successivo click del link, non esistendo più il file vengo reindirizzato in una pagina di errore, senza eseguire la query.

Questa procedura potrebbe creare qualche problema di sicurezza?

Spero di essere stato un po iù chiaro..
Grazie
Io farei nel seguente modo:
1. clicca sul link, interroga il db e setta un valore in una colonna "Elaborato=1"
2. clicca sul link, interroga il db, trovando il valore settato a 1, stop.

Poi è valido anche il salvataggio di un file.

Attenzione se possibile a fare l'encoding del file nella url e passare due paramentri con &parametro=ciao

Ormai programmano tutti... ma la professionalità appartiene a pochi
3 messaggi dal 29 giugno 2014
Si. L'idea del file era per non continuare ad interrogare il database.
Grazie mille per le risposte.
ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.