Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在ASP.NET中检测HTML_C#_Javascript_Asp.net - Fatal编程技术网

C# 在ASP.NET中检测HTML

C# 在ASP.NET中检测HTML,c#,javascript,asp.net,C#,Javascript,Asp.net,(澄清:这是一个出于管理目的而调整的老问题) 在这个网站上有很多关于从textareas和诸如此类的地方解析HTML,或者不允许在文本框中使用HTML的问题。我的问题类似:如何检测文本框中是否存在HTML?我需要在所有已知HTML标记的正则表达式中运行它吗?当前是否有一个.NET库能够检测何时将HTML插入文本区域 编辑:类似地,是否有一个JavaScript库可以实现这一点 编辑#2:由于web应用程序的工作方式(它使用ASP.NET的验证方法验证异步回发上的textarea文本),它在返回到

(澄清:这是一个出于管理目的而调整的老问题)

在这个网站上有很多关于从textareas和诸如此类的地方解析HTML,或者不允许在文本框中使用HTML的问题。我的问题类似:如何检测文本框中是否存在HTML?我需要在所有已知HTML标记的正则表达式中运行它吗?当前是否有一个.NET库能够检测何时将HTML插入文本区域

编辑:类似地,是否有一个JavaScript库可以实现这一点


编辑#2:由于web应用程序的工作方式(它使用ASP.NET的验证方法验证异步回发上的textarea文本),它在返回到后面的代码使用HTML.Encode之前就爆炸了。我关心的是如何在这些实例中找到处理HTML的另一种方法。

是的,正则表达式可能是最简单的方法

一个正则表达式是:
]*>(.*)

您可以在ASP.Net和javascript中运行它。您使用的.Net framework类是
System.Text.RegularExpressions.Regex


希望有帮助

是的,正则表达式可能是最简单的方法

一个正则表达式是:
]*>(.*)

您可以在ASP.Net和javascript中运行它。您使用的.Net framework类是
System.Text.RegularExpressions.Regex


希望有帮助

在HTML中,没有小于符号你做不了很多事“在HTML中,没有小于符号你做不了很多事”这不是一个真正的答案,但你为什么需要它呢?只有当您要在不进行修改的情况下输出HTML输入时,您才需要清理HTML输入,例如,如果您希望允许您的用户实际能够使用HTML。如果您想这样做,您不必“检测”HTML,您只需要确保安全地处理它。杰夫·阿特伍德对此有很好的解释


如果您想阻止所有HTML输出,您可以接受用户输入的任何内容,而无需任何检查。只需注意HTML编码,并以这种方式存储即可。那么,您的输出将不会包含用户编写的任何“真实”HTML。

不是真正的答案,但您为什么需要它呢?只有当您要在不进行修改的情况下输出HTML输入时,您才需要清理HTML输入,例如,如果您希望允许您的用户实际能够使用HTML。如果您想这样做,您不必“检测”HTML,您只需要确保安全地处理它。杰夫·阿特伍德对此有很好的解释


如果您想阻止所有HTML输出,您可以接受用户输入的任何内容,而无需任何检查。只需注意HTML编码,并以这种方式存储即可。那么,您的输出将不会包含用户编写的任何“真实”HTML。

据我所知,您无法将HTML粘贴到文本区域,并至少在.Net 2.0中自动运行。ASP.Net自动更新输入。您需要将validateInputPage指令设置为false(如果我没记错的话)


如果您希望允许使用HTML标记,并希望从可能的标记列表中进行选择,我建议您查找“标记”和。

据我所知,您不能将HTML粘贴到文本区域,至少在.Net 2.0中不能自动工作。ASP.Net自动更新输入。您需要将validateInputPage指令设置为false(如果我没记错的话)

如果您希望允许使用HTML标记,并希望从可能的标记列表中进行选择,我建议您查找“Markdown”和。

bool containsHtml=Regex.IsMatch(MyTextbox.Text,@');
boolcontainshtml=Regex.IsMatch(MyTextbox.Text,@');

+1阳光明媚。“检测”HTML是一件傻事。您需要在输出时逃逸,并且只要您这样做,您就安全了。如果你没有逃脱,消毒黑客不会让你安全,他们只会混淆问题

 由于web应用程序的工作方式(它使用ASP.NET的验证方法验证异步回发上的textarea文本)


是的,你会想停止那样做的。ASP.NET的“请求验证”完全是假的,如果你想有机会一致地处理上传的内容,就需要关闭它。

+1。“检测”HTML是一件傻事。您需要在输出时逃逸,并且只要您这样做,您就安全了。如果你没有逃脱,消毒黑客不会让你安全,他们只会混淆问题

 由于web应用程序的工作方式(它使用ASP.NET的验证方法验证异步回发上的textarea文本)


是的,你会想停止那样做的。ASP.NET的“请求验证”完全是假的,如果您想有机会一致地处理上传的内容,就需要关闭它。

这不足以检测一般的标记,并且可能会被许多不同的标记所愚弄。如果你打算将“剥离标签”作为一种安全措施(你不应该这样做,这注定会失败),你需要更加严格。这不足以检测一般的标签,而且可能会被许多不同的标记所愚弄。如果你想把“标签剥去”作为一种安全措施(你不应该这样做,这注定会失败),你需要更加严格。
bool containsHtml = Regex.IsMatch(MyTextbox.Text, @"<(.|\n)*?>");