Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.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# 如果我们从输入中删除所有脚本和java单词,我们是否可以说免受XSS攻击_C#_Asp.net_Xss_Sanitization - Fatal编程技术网

C# 如果我们从输入中删除所有脚本和java单词,我们是否可以说免受XSS攻击

C# 如果我们从输入中删除所有脚本和java单词,我们是否可以说免受XSS攻击,c#,asp.net,xss,sanitization,C#,Asp.net,Xss,Sanitization,我正在使用asp.net htmleditorextender,不幸的是,现在没有可用的XSS消毒液。因此,作为一个快速的解决方案,我将替换用户输入中的所有脚本和java单词,如下所示 var regex = new Regex("script", RegexOptions.IgnoreCase); srSendText = regex.Replace(srSendText, ""); regex = new Regex("java", RegexOptions.Ign

我正在使用asp.net htmleditorextender,不幸的是,现在没有可用的XSS消毒液。因此,作为一个快速的解决方案,我将替换用户输入中的所有脚本和java单词,如下所示

    var regex = new Regex("script", RegexOptions.IgnoreCase);
    srSendText = regex.Replace(srSendText, "");

    regex = new Regex("java", RegexOptions.IgnoreCase);
    srSendText = regex.Replace(srSendText, "");
我可以假设我不受XSS攻击吗


实际上,我使用的是htmlagilitypack anti-xss消毒剂,但它甚至没有删除脚本标记,因此完全无用

在我看来,自定义xss预防通常是不允许的,因为您应该始终使用库。然而,剥离
script
java
是不够的,传递给服务器的任何内容都应该使用
HttpUtility.HtmlEncode
,它将对用户的任何输入进行编码

还要确保在配置文件中设置了
validateRequest=“true”

其他危险标签可能包括:

  • 小程序
  • 身体
  • 嵌入
  • 框架
  • 剧本
  • 框架集
  • html
  • iframe
  • img
  • 风格
  • 链接
  • 伊莱耶
  • 反对

在我看来,自定义XSS预防通常是不允许的,因为您应该始终使用库。然而,剥离
script
java
是不够的,传递给服务器的任何内容都应该使用
HttpUtility.HtmlEncode
,它将对用户的任何输入进行编码

还要确保在配置文件中设置了
validateRequest=“true”

其他危险标签可能包括:

  • 小程序
  • 身体
  • 嵌入
  • 框架
  • 剧本
  • 框架集
  • html
  • iframe
  • img
  • 风格
  • 链接
  • 伊莱耶
  • 反对
不,你不能

攻击者可以通过将
script
编码为
sc;cript

要确保代码不受XSS攻击,请确保任何来自用户的内容在没有正确编码的情况下都不会放入页面,以确保文本中的任何代码都不会执行。

不,您不能

攻击者可以通过将
script
编码为
sc;cript



确保代码不受XSS攻击的方法是确保任何来自用户的内容在没有正确编码的情况下都不会放入页面,以确保文本中的任何代码都不会执行。

只需确保在将输入呈现为HTML之前正确转义(或在输入时转义)我喜欢razor的原因之一是:如果你犯了错误,你通常会对数据进行双重编码,而不是打开XSS漏洞。这两件事中的一件很容易被发现并且没有风险;另一个是微妙的,非常危险的…其他一些潜在的漏洞:在将输入呈现为HTML之前确保正确地转义输入(或在输入时转义输入),这是通常防止XSSHave的方法—您尝试自己攻击它?我喜欢razor的原因之一:如果您犯了错误,通常情况下,您会对数据进行双重编码,而不是打开XSS漏洞。这两件事中的一件很容易被发现并且没有风险;另一个是微妙的和真正危险的…一些其他潜在的漏洞:我明白了。所以我需要先解码替换,然后编码并保存:)@MonsterMMORPG:No。替换几个关键字并不能保护你。当您将文本放入页面时,您应该对其进行编码,以便不执行任何标记,而不是尝试删除危险的关键字以便可以执行标记。我该如何做?你能举个例子吗?我不是应该解码并显示给用户吗?@MonsterMMORPG:这取决于您使用的应用程序类型。例如,在web表单应用程序中,您使用
对输出进行编码。我假设编码的文本由浏览器解码,但不是作为脚本执行,对吗?我明白了。所以我需要先解码替换,然后编码并保存:)@MonsterMMORPG:No。替换几个关键字并不能保护你。当您将文本放入页面时,您应该对其进行编码,以便不执行任何标记,而不是尝试删除危险的关键字以便可以执行标记。我该如何做?你能举个例子吗?我不是应该解码并显示给用户吗?@MonsterMMORPG:这取决于您使用的应用程序类型。例如,在web表单应用程序中,您使用
对输出进行编码。我假设编码的文本由浏览器解码,但不作为脚本执行,对吗?@MonsterMMORPG您可以使用AntiXSS-@MonsterMMORPG您可以使用AntiXSS-