Ho un sito ASP.NET 4 su cui voglio consentire alle persone di inserire "<" nella loro password. Tuttavia, .NET si intromette bloccando (quello che vede come) un tentativo di inserire HTML in un campo modulo. So che posso disattivare completamente la convalida dell'input, ma voglio solo disattivarlo per questo campo. Qualcuno sa un modo semplice per farlo?Disabilita la convalida dell'input per un singolo campo
risposta
È possibile disattivare solo la convalida dell'input per l'intera pagina. L'unica soluzione che posso pensare è di disattivare la convalida dell'input e quindi scrub tutti gli altri campi di input (non password) usando qualcosa come Anti-XSS.
Grazie per aver segnalato un collegamento senza citare l'esempio. Dead link now –
Non è un esempio, era un collegamento a una libreria che fornisce funzionalità anti-xss. Ora su https://www.nuget.org/packages/AntiXSS/4.3.0. –
Ok scusa, ma ora non posso annullare il mio down-vote. Potresti modificare il tuo post con il nuovo link in modo che io possa farlo? –
È possibile disattivare la convalida dell'input per la singola azione MVC utilizzando ValidateInputAttribute. Dal momento che accetti solo nome utente/password (presumo) dovresti essere in grado di scriverti l'inserimento di eventuali caratteri non validi. Utilizzare lo Microsoft Web Protection Library per farlo.
Questo è Webforms, non MVC e I avere molti input su questa pagina Altrimenti funzionerebbe benissimo :) – eliah
Mah bad. Esiste una proprietà ValidateRequest nella direttiva @Page che è possibile utilizzare per disattivare la convalida solo per quella particolare pagina, ma ritengo che sia il più dettagliato possibile. –
Nota in ASP.NET 4 e versioni successive per ottenere ValidateRequest nella direttiva @Page per funzionare è necessario aggiungere <httpRuntime requestValidationMode="2.0" />
a web.config. Vedi questa pagina per i dettagli: http://www.asp.net/whitepapers/aspnet4/breaking-changes
Ma questo è il mio approccio preferito:
namespace Controls
{
public class HtmlTextBox : TextBox
{
protected override bool LoadPostData(string postDataKey, System.Collections.Specialized.NameValueCollection postCollection)
{
bool res = base.LoadPostData(postDataKey, postCollection);
Text = Text.Replace("<", "<").Replace(">", ">").Replace("&", "&");
return res;
}
protected override void OnPreRender(EventArgs e)
{
base.OnPreRender(e);
ScriptManager.RegisterOnSubmitStatement(this, this.GetType(), "htmlTextBox" + UniqueID, "try { var item = document.getElementsByName('" + UniqueID + "')[0]; item.value = item.value.replace(/&/g, '&').replace(/</g, '<').replace(/>/g, '>'); } catch (err) {}");
}
}
}
E poi registrare il controllo in web.config:
<system.web>
<pages>
<controls>
<add tagPrefix="uc1" namespace="Controls" />
</controls>
</pages>
</system.web>
In questo modo si può semplicemente utilizzare <uc1:HtmlTextBox runat="server" />
se si desidera consentire alla casella di testo di pubblicare html, ma gli altri controlli della pagina saranno comunque bloccati dalla pubblicazione di html a differenza dell'approccio di disattivazione di ValidateRequest.
Questo è possibile. Basta aggiungere [AllowHtml]
sulla proprietà che non deve essere convalidata.
vedere ValidateInputAttribute does not contain a definition for Exclude
Questo è ora possibile con .NET 4.5.
Aggiornare il web.config:
<httpRuntime targetFramework="4.5" requestValidationMode="4.5" />
Quindi impostare ValidateRequestMode="Disabled"
sui vostri controlli delle password:
<asp:YourControl id="YourControl" runat="server" ValidateRequestMode="Disabled"/>
Nota - dopo l'aggiornamento web.config, si potrebbe incorrere nell'errore WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for 'jquery'.
Vedere ASP.Net 2012 Unobtrusive Validation with jQuery per maggiori informazioni su questo.
Maggiori informazioni RequestValidationMode 4.5: requestValidationMode 4.5 vs 2.0
- 1. Disabilita la convalida del backend per il campo di scelta in Symfony 2 Tipo
- 2. Disabilita la convalida del modulo nel browser
- 3. Disabilita la convalida XML in Eclipse
- 4. Annotazioni dati per la convalida, almeno un campo obbligatorio?
- 5. Entity Framework/MVC3: disabilita temporaneamente la convalida
- 6. Symfony2 disabilita la convalida del modulo HTML5
- 7. (Temporaneamente) Disabilita convalida in WPF
- 8. Eclipse kepler - Disabilita convalida javascript
- 9. Disabilita la convalida di un elemento con jQuery Convalida non invadente
- 10. jQuery Plugin Convalida - Convalida Campo nascosto per nome
- 11. Come selezionare un singolo campo in MongoDB?
- 12. Espressione regolare per la convalida del campo indirizzo
- 13. Convalida campo non-modello
- 14. Disabilitare la selezione di un singolo UITableViewCell
- 15. modelli django che selezionano un singolo campo
- 16. Convalida selezionare campo
- 17. CKEditor plugin - la convalida di un campo di testo
- 18. Visualizza token Solr non elaborati per un singolo campo su un singolo documento
- 19. Convalida un campo di scelta popolato dinamicamente
- 20. Come utilizzare la convalida Struts2 per la convalida condizionale?
- 21. Convalida JQuery - Disattiva onfocusout per un solo campo
- 22. asp.net campo obbligatorio validatore disabilita invio modulo invio modulo
- 23. Disabilita la convalida del certificato ssl in mechanize
- 24. laravel "almeno un" Campo Obbligatorio convalida
- 25. Disabilita pulsante Salva in WPF se la convalida fallisce
- 26. Disabilita la convalida del certificato SSL della connessione HTTPS?
- 27. Scenari Gherkin per la convalida dell'input dell'utente
- 28. Disabilita il completamento automatico sul campo di testo in Django?
- 29. Convalida campo richiesto nel ripetitore
- 30. convalida campo di posta elettronica
C'è un motivo particolare che è necessario
@ eddy556 - ha bisogno di un motivo speciale? – Oded
@Oded - Certo che lo fa, posso capire i vantaggi di avere un personaggio in più, ma se questo è vero perché vuole solo permettere viene in mente. –