C# 将每个用户输入作为纯文本处理
我们有一个非常大的web应用程序。C# 将每个用户输入作为纯文本处理,c#,javascript,asp.net,.net,html,C#,Javascript,Asp.net,.net,Html,我们有一个非常大的web应用程序。 总共约12万条线路 在此应用程序中,用户可以输入大量文本。 在用户信息、文件夹、组等中 一些用户希望命名不同的对象,如Age
总共约12万条线路 在此应用程序中,用户可以输入大量文本。
在用户信息、文件夹、组等中 一些用户希望命名不同的对象,如
Age<20
出现了一个问题,因为ASP.NET会阻止此类输入,因为“如果使用JQuery,则无论何时将值设置为任何span或div 使用:
$('myDiv')。文本('alert(“a”));
不要使用:
$('#myDiv').html('<script>alert("a")</script>');
$('#myDiv').html('alert(“a”));
或
$('myDiv').innerHTML='alert(“a”);
如果您不想使用HTML编码解码,请尝试ValidateRequest=“false”
您可以像下面的代码一样执行:
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" ValidateRequest="false" Inherits="_Default" %>
我正确地记得,当您使用数据绑定时,这是automatic@SteveB请您指定您的答案好吗?我到底应该绑定什么?我的意思是,如果您在数据模板(DataList、Datagrid等)中有一个
,如果您将textbox绑定到内部上下文对象,则编码/解码将由数据绑定自动处理。@SteveB但我有很多控件,它们不在datatemplate中。我也有一些控件,但它们也不能正确显示文本。我认为这不是他需要的解决方案:而injects将不管怎样,没有html编码/解码和转义都是可能的。第一部分是我们用来关闭安全机制的。第二部分我们必须检查整个应用程序,并将其添加到所有地方。我希望有一个更全局的解决方案。
$('#myDiv').innerHTML='<script>alert("a")</script>';
<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" ValidateRequest="false" Inherits="_Default" %>
<script>
function Encode() {
var value = (document.getElementById('TextBox1').value);
value = value.replace('<', "<");
value = value.replace('>', ">");
document.getElementById('TextBox1').value = value;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" Text="Button" OnClientClick="Encode()" />
</form>
protected void Page_Load(object sender, EventArgs e)
{
this.TextBox1.Text = Server.HtmlDecode(this.TextBox1.Text);
}