C# 对查询字符串参数使用html.encode

C# 对查询字符串参数使用html.encode,c#,asp.net,architecture,html.encode,C#,Asp.net,Architecture,Html.encode,在将查询字符串参数传递到业务层之前使用html.encode是一种好的做法吗?该场景是关于asp.net framework的,我想知道在从键读取值之前是否必须对查询字符串的内容进行编码 我知道我们总是可以将内容转换为预期的数据类型,但我的问题是从设计的角度出发的 谢谢 我会说是的。至少你想这样做,因为浏览器可能会得到错误的编码。一个符号可能显示为另一个符号,或显示为未知字符。如果浏览器出错,它甚至可能与前面的字符混淆 更复杂的原因包括它有助于防止HTML注入 关于为什么需要使用HTML编码的简

在将查询字符串参数传递到业务层之前使用html.encode是一种好的做法吗?该场景是关于asp.net framework的,我想知道在从键读取值之前是否必须对查询字符串的内容进行编码

我知道我们总是可以将内容转换为预期的数据类型,但我的问题是从设计的角度出发的

谢谢

我会说是的。至少你想这样做,因为浏览器可能会得到错误的编码。一个符号可能显示为另一个符号,或显示为未知字符。如果浏览器出错,它甚至可能与前面的字符混淆

更复杂的原因包括它有助于防止HTML注入


关于为什么需要使用HTML编码的简短解释是,一组特定的字符在HTML中意味着一些特殊的东西,编码将有助于在所有浏览器中优雅地使用符号(如插入符号和符号)。

我不确定在何处尝试使用enocde参数。如果您没有使用
Request.RawUrl
参数,应该在QueryString中很好地解码,或者在ASP.Net MVC操作参数中更好地解码。。。或者您正在谈论客户端的一些附加编码?我正在谈论这个www.foo.com?number=abc。要验证number key的内容是否为abc而不是10000,最佳做法是信任Request。QueryString[“number”]值或另外使用html.encode,然后再在代码隐藏中使用。
Request。QueryString[“number”]
是服务器端应该看到的值-它被解码一次(在原始url中编码)。我认为对它进行编码没有任何价值(额外的编码甚至可能使该值不可用)。我怀疑您在编写HTML时将其与正确编码值的需要混淆了…感谢您的建议,我同意您的看法。