2010-09-02 10 views
5

Ho diverse caselle di testo in un Web Form ASP.NET. Voglio assicurarmi che gli utenti siano non inserendo HTML in queste caselle di testo. Tuttavia, non sono sicuro di come impedire l'inserimento di HTML. Per questo motivo, ho deciso di voler consentire solo caratteri alfanumerici, spazi, punto esclamativo, segno tagliente, simboli del dollaro, segni di percentuale, segni di omissione, stelle e parentesi sinistra e destra. Sto omettendo la e commerciale perché non voglio che entrino in qualcosa come "< script &rt; ..."Come impedire l'immissione di HTML nella casella di testo del modulo Web ASP.NET

Come faccio a fare questo? Lo sto facendo nel modo giusto?

Grazie!

+0

Qualsiasi metodo tu scelga, assicurati di convalidare l'input sia sul client che sul server: la convalida del client può essere facilmente aggirata con un debugger javascript. –

risposta

1

Date un'occhiata qui http://msdn.microsoft.com/en-us/library/ff649310.aspx

Si può mettere una dichiarazione generale nella configurazione web ValidateRequest = true controllerà tutti gli input dell'utente e genera un errore se un utente inserisce qualcosa con personaggi cattivi.

Se è necessario consentire alcuni tag html, è necessario eseguire il rollover.

+0

+1 è integrato ... (gestisci l'errore, ovviamente). –

+0

-1: non credo che lanciando errori/eccezioni agli utenti sia una buona pratica. E ValidateRequest = true non copre tutte le forme di prevenzione XSS, se questa è l'intenzione. –

+0

@Caspar Kleijne puoi fornire alcuni riferimenti a ValidateRequest che non copre tutte le forme di XSS? Sono curioso di leggerlo. Ho immaginato che microsoft avrebbe fatto un lavoro migliore per catturare tutti i casi di input pericoloso per l'utente meglio di I/o lo sviluppatore medio avrebbe potuto farcela da solo. –

1

La pagina, per impostazione predefinita, impedirà agli utenti di pubblicare HTML o script nelle caselle di testo o nei textareas. Vedere MSDN

0

è possibile utilizzare un metodo per pulire i codici HTML da entry come:

public static string ClearHTML(string Str, Nullable<int> Character) 
{ 
    string MetinTxtRegex = Regex.Replace(Str, "<(.|\n)+?>", " "); 

    string MetinTxtSubStr = string.Empty; 

    if (Character.HasValue) 
    { 
     if (MetinTxtRegex.Length > Character) 
     { 
      MetinTxtSubStr = MetinTxtRegex.Substring(0, Character.Value); 
      MetinTxtSubStr = MetinTxtSubStr.Substring(0, MetinTxtSubStr.LastIndexOf(" ")) + "..."; 
     } 
     else 
     { 
      MetinTxtSubStr = MetinTxtRegex; 
     } 
    } 
    else 
    { 
     MetinTxtSubStr = MetinTxtRegex; 
    } 
    return MetinTxtSubStr; 
} 
0

ho usato:

HttpUtility.HtmlEncode(); 

Maggiori informazioni here.

Problemi correlati