Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/338.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#表单提交过程中可能出现的危险错误、撇号_C#_Html_Asp.net_Webforms - Fatal编程技术网

C#表单提交过程中可能出现的危险错误、撇号

C#表单提交过程中可能出现的危险错误、撇号,c#,html,asp.net,webforms,C#,Html,Asp.net,Webforms,请帮助我理解为什么会发生这种情况。我的Web应用程序从数据库检索包含撇号的文本,并使用Web表单中的标签显示。但是,当我提交Web表单时,它会出现一个潜在的危险错误 我可以通过在将值设置为Label.Text之前对其使用HttpUtility.HtmlDecode()来解决此错误 我一直在谷歌上搜索,我无法理解导致这个问题的流程 我知道在提交可能的HTML标记(如“”)时会发生潜在的危险错误,并且它还会过滤一些编码字符(如“”) 然而,我无法理解的是: 字符串值在Web表单上显示时是否自动进行H

请帮助我理解为什么会发生这种情况。我的Web应用程序从数据库检索包含撇号的文本,并使用Web表单中的标签显示。但是,当我提交Web表单时,它会出现一个潜在的危险错误

我可以通过在将值设置为Label.Text之前对其使用HttpUtility.HtmlDecode()来解决此错误

我一直在谷歌上搜索,我无法理解导致这个问题的流程

我知道在提交可能的HTML标记(如“”)时会发生潜在的危险错误,并且它还会过滤一些编码字符(如“”)

然而,我无法理解的是:

  • 字符串值在Web表单上显示时是否自动进行HTML编码?因为我的数据库中的值不是HTML编码的

  • 当数据库中的值没有编码时,为什么解码它可以解决错误?如果是这样,我应该解码数据库中的所有值吗


  • 我想你正在寻找这样的东西->

    出现这种情况的主要原因是,如果不正确处理撇号,接受撇号可能会导致错误。默认情况下,Microsoft启用每个请求都会发生的验证,甚至在到达正常页面生命周期之前就发生了验证,并检查表单中是否存在任何可能导致SQL注入或其他漏洞的内容(我并不是说Microsoft会保护您免受一切伤害,但至少会尝试涵盖基本内容并让您意识到)。最后,您可以禁用该功能(基于我的第一个链接),但您应该意识到并以适当的方式保护自己

    在你的问题上,如名字所说,将注意撇号作为一个适当的字符,而不是一个仍然可以用于SQL查询的特殊字符。显然,根据场景的不同,你可能希望在演示时再次对其进行解码或编码。如果你想显示丰富的html,那么你可能需要颂歌等


    一句话我想你应该回到我的第一段,明白这是什么时候开始的,只有这样你才能明白什么是适合你的案例的正确解决方案,因为我假设你不想冒险创建一个易受攻击的网站:)

    我想你正在寻找这样的东西->

    出现这种情况的主要原因是,如果不正确处理撇号,接受撇号可能会导致错误。默认情况下,Microsoft启用每个请求都会发生的验证,甚至在到达正常页面生命周期之前就发生了验证,并检查表单中是否存在任何可能导致SQL注入或其他漏洞的内容(我并不是说Microsoft会保护您免受一切伤害,但至少会尝试涵盖基本内容并让您意识到)。最后,您可以禁用该功能(基于我的第一个链接),但您应该意识到并以适当的方式保护自己

    在你的问题上,如名字所说,将注意撇号作为一个适当的字符,而不是一个仍然可以用于SQL查询的特殊字符。显然,根据场景的不同,你可能希望在演示时再次对其进行解码或编码。如果你想显示丰富的html,那么你可能需要颂歌等


    一句话我想你应该回到我的第一段,明白这是什么时候开始的,只有到那时你才能理解什么是适合你的案例的正确解决方案,因为我假设你不想冒险创建一个易受攻击的网站:)

    是的,我读了你之前发布的那个问题,但我仍然有未回答的问题。由于我的工作性质,我不允许禁用验证。我不了解的是这个过程的生命周期;特别是HTML编码和解码部分。我是否正确地假设文本在Web表单中呈现时是自动进行HTML编码的,因为我遇到了引用的错误&;?为什么HTML解码文本解决了我的问题?所讨论的文本在保存到数据库之前不是HTML编码的。在解码之前你不需要编码吗?@PikaManiac我不想说你显然需要编码,因为这取决于场景。然而,在这个特定场景中,我认为您确实需要这样做,因为我假设您有一个texarea或某个地方有人在其中插入“don&;?t”,当您对其进行编码时,它会变成“don&;?t”,浏览器可以理解并将其呈现为“don&;?t”。看这把小提琴,是的,我读过你之前贴的那个问题,但我还有一些问题没有回答。由于我的工作性质,我不允许禁用验证。我不了解的是这个过程的生命周期;特别是HTML编码和解码部分。我是否正确地假设文本在Web表单中呈现时是自动进行HTML编码的,因为我遇到了引用的错误&;?为什么HTML解码文本解决了我的问题?所讨论的文本在保存到数据库之前不是HTML编码的。在解码之前你不需要编码吗?@PikaManiac我不想说你显然需要编码,因为这取决于场景。然而,在这个特定场景中,我认为您确实需要这样做,因为我假设您有一个texarea或某个地方有人在其中插入“don&;?t”,当您对其进行编码时,它会变成“don&;?t”,浏览器可以理解并将其呈现为“don&;?t”。看这把小提琴