Come tagliare tutti i valori in entrata in una richiesta HTTP Post?

2

Ho un modulo HTML, con più di 30 campi al suo interno. Quando questo modulo viene inviato al server, tutti i valori dei campi devono essere ritagliati. In altre parole, nessun valore dovrebbe iniziare / finire con qualsiasi tipo di spazio bianco ( \b ).

Ci sono molte opzioni disponibili per me:

  1. Taglia manualmente ogni valore
  2. In loop su valori e ritagliare ciascuno
  3. Creare un framework (qualcosa come il modulo HTTP di ASP.NET) per sedersi sulla strada di qualsiasi richiesta HTTP Post, per tagliare il valore in entrata.

La terza opzione sembra la migliore. Tuttavia, non so se è veramente il migliore o no? E anche io non so come farlo. È possibile a tutti? Quali sono le altre soluzioni?

    
posta Rasoul Zabihi 26.10.2011 - 11:22
fonte

2 risposte

2

Se non ti interessa davvero della sicurezza, puoi prendere in considerazione la possibilità di tagliare i campi con Javascript quando viene cliccato il pulsante di invio del modulo (event * onsubmit "da implementare). Ovviamente, questo è ovviamente facilmente aggirabile poiché è il codice del server client.

Altrimenti, per una soluzione lato server, tutte le soluzioni funzionano. Non sono sicuro del modulo, ma penso che eseguirà questo trimming per tutte le applicazioni sul server, giusto? Quindi puoi considerare questo fattore se la tua applicazione non è l'unica distribuita.

Infine, ma potresti averlo già considerato, puoi eseguire correttamente il ritaglio usando listener di richieste HTTP.

In J2EE (o come si chiama ora), consisterebbe nell'implementare il proprio metodo ServletRequestListener e requestInitialized . Il vantaggio qui è che puoi impacchettare questo listener in un semplice JAR e aggiungerlo (e la sua configurazione in web.xml) solo per le applicazioni che lo richiedono.

In .NET, consisterebbe nell'override del metodo Application_BeginRequest in Global.asax.cs . Quindi funzionerebbe solo per l'applicazione per cui hai scritto il codice.

    
risposta data 26.10.2011 - 12:20
fonte
2

È molto comune "pulire / risciacquare" i dati in arrivo. Questo è meglio gestito lato server, in genere dal metodo a cui si sta POST (si può avere un helper statico per eseguire il lavoro effettivo).

Scrivere un modulo per intercettare tutte le richieste sembra eccessivo (ma efficace se hai bisogno di questa applicazione o di tutto il server).

Non parli di una tecnologia, ma in ASP.NET MVC, assomiglierebbe a qualcosa del tipo:

[HttpPost]
public ActionResult Index(FormCollection form)
{
    foreach (var field in form.AllKeys)
        form[field] = form[field].Trim();

    return View();
}

Quindi, suppongo che vada con l'opzione n. 2, lato server!

Modifica: ha appena cambiato la mia falsa chiamata Regex.Replace () a String.Trim ()

    
risposta data 26.10.2011 - 16:34
fonte

Leggi altre domande sui tag