I want to add a validator which prevents the html injection on Asp.Net injection. I am using the below code :
<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="HTML Tags Not Allowed" ControlToValidate="TxtBoxMultiLine" ClientValidationFunction="ValidateTitle" ValidationGroup="htmlValidation"></asp:CustomValidator>
<asp:Button Text="Save" ID="addSaveBttn" CssClass="savesimpleshape1" runat="server" OnClick="addSaveBttn_Click" ValidationGroup="htmlValidation"/>
i am using that javascript function to validate my textbox.
function ValidateTitle(event) {
str = (document.getElementById('textBoxValidation')).value;
if (str.match(/([<])([^>]{1,})*([>])/i) == null) {
event.IsValid = true;
}
else {
event.IsValid = false;
}
}
When i pressed the button occurs that exception : A potentially dangerous Request.Form value was detected from the client
It seems that is ignoring my validation. Also, i don’t want to put this element : ValidateRequest = false on my page.
2
Answers
You may use client script like:
and
You could correct some errors.
to
You must set all input to some validation group
and you must add a script resource for WebForms UnobtrusiveValidationMode requires a ScriptResourceMapping for ‘jquery’ error. also your regex not complately detect html code you change your regex from
to
may you need more complex regex.
To avoid the exception: A potentially dangerous Request.Form value was detected from the client Add the below inside the
<system.web>
element.After validating your input, the below will strip HTML tags in a textbox using regex.