J'ai une application Web utilisant des pages aspx. D'abord, je voulais utiliser Server.HtmlEncode(value)
whhen afficher la valeur dans une LabelledTextBox
Une valeur Request.Form potentiellement dangereuse a été détectée à partir du client: Quelle solution
public interface ILabelledControl
{
bool ReadOnly { get; set; }
}
[DefaultProperty("Text")]
[ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1>")]
public class LabelledTextBox : TextBox, ILabelledControl
{
//public Unit EditableWidth { get; set; }
public Unit ReadOnlyWidth { get; set; }
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
if (this.ReadOnly)
{
System.Web.UI.WebControls.Label lbl = new System.Web.UI.WebControls.Label();
foreach (string att in this.Attributes.Keys)
lbl.Attributes.Add(att, this.Attributes[att]);
lbl.Text = this.Text;
lbl.ForeColor = ForeColor;
//lbl.Width = this.Width;
if (ReadOnlyWidth != null)
lbl.Width = ReadOnlyWidth;
lbl.CssClass = CssClass;
lbl.ID = this.ID;
lbl.RenderControl(writer);
}
else
{
base.Render(writer);
}
}
}
La valeur <script>alert("hello")</script>
a été affiché, mais le script a été exécuté.
Par la suite, je voulais essayer une autre solution qui devait gérer l'exception
A potentially dangerous Request.Form value was detected from the client
de rester sur la même page contenant le formulaire et l'affichage d'un message d'erreur sur le dessus avec un message générique comme « S'il vous plaît être Assurez-vous que toutes les entrées ne contiennent pas de caractères tels que '<' ou '>' "
Solution 1: Qu'est-ce que je fais de mal?
Solution 2: Comment puis-je gérer cette exception et rester sur la même page avec le formulaire rempli
général: Quelle solution est la meilleure?
Thx!
1) Comment puis-je créer une validation côté client? Quels caractères dois-je supprimer? Il y a beaucoup de personnages qui peuvent être dangereux, ai-je tort? 2) J'ai essayé d'utiliser HtmlEncode - la valeur est affichée mais toujours exécutée – Weedoze
1) J'ai mis à jour la première réponse. 2) HtmlEncode est suffisant. Veuillez le tester dans le contrôle TextBox standard au lieu du contrôle serveur personnalisé. – Win