Quiero agregar un validador que evite la inyección de html en la inyección de Asp.Net. Estoy usando el siguiente código:
<asp:TextBox ID="TxtBoxMultiLine" runat="server" TagName="textBoxValidation" Width="50%" AutoPostBack="False" autocomplete="off" textMode="MultiLine"></asp:TextBox>
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="Etiquetas HTML no permitidas" ControlToValidate="TxtBoxMultiLine" ClientValidationFunction="ValidateTitle" ValidationGroup="htmlValidation"></asp:CustomValidator>
<asp:Button Text="Guardar" ID="addSaveBttn" CssClass="savesimpleshape1" runat="servidor" OnClick="addSaveBttn_Click" ValidationGroup="htmlValidation"/>
estoy usando esa función javascript para validar mi cuadro de texto.
function ValidateTitle(event) { str = (document.getElementById('textBoxValidation')).value; if (str.match(/([\<])([^\>]{1,})*([\>])/i) == null) { event.IsValid = true; } else { event.IsValid = false; } }Cuando presioné el botón, se produjo esa excepción: se detectó un valor Request.Form potencialmente peligroso del cliente
Parece que está ignorando mi validación. Además, no quiero poner este elemento: ValidateRequest = false en mi página.
Para evitar la excepción: se detectó un valor Request.Form potencialmente peligroso del cliente Agregue lo siguiente dentro del elemento <system.web> .
<sessionState mode="InProc" cookieless="UseUri"/>Después de validar su entrada, lo siguiente eliminará las etiquetas HTML en un cuadro de texto usando expresiones regulares.
const rx = /(<([^>]+)>)/ig const result = str.replace(rx, "");Puede usar un script de cliente como:
function ValidateTitle(event,args) { str = (document.getElementById('textBoxValidation')).value; if (str.match(/([\<])([^\>]{1,})*([\>])/i) == null) { args.IsValid = true; } else { args.IsValid = false; } }y
<asp:CustomValidator ID="CustomValidator1" runat="server" ErrorMessage="HTML Tags Not Allowed" ControlToValidate="TxtBoxMultiLine" ClientValidationFunction="ValidateTitle" ValidationGroup="htmlValidation" EnableClientScript="true" Display="Dynamic"></asp:CustomValidator>Podrías corregir algunos errores.
str = (document.getElementById('textBoxValidation')).value;a
str = (document.getElementById('TxtBoxMultiLine')).value;Debe establecer todas las entradas en algún grupo de validación
y debe agregar un recurso de secuencia de comandos para WebForms UnobtrusiveValidationMode requiere un ScriptResourceMapping para el error 'jquery'. también su expresión regular no detecta completamente el código html del que cambia su expresión regular
if (str.match(/([\<])([^\>]{1,})*([\>])/i) == null) {a
if (str.match("<[^>]*>") == null) {puede que necesite expresiones regulares más complejas.