2013-04-18 62 views
1

在将查询字符串参数传递给业务层之前使用html.encode是否是一种很好的做法?该场景是相对于asp.net框架,我想知道是否必须编码查询字符串的内容或不读取键之前的值?使用html.encode查询字符串参数

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

谢谢!

+0

我不确定你在哪里尝试enocde参数。如果你没有使用'Request.RawUrl'参数应该在QueryString中很好地解码,或者在ASP.Net MVC动作参数中更好......或者你正在谈论客户端的一些额外的编码? –

+0

我正在谈论这个www.foo.com?number=abc。要验证数字键的内容是abc而不是10000,最好的做法是信任Request.QueryString [“number”]值或另外使用html.encode,然后在代码后面使用。 – fooMyFavoriteVariable

+0

'Request.QueryString [“number”]'是服务器端应该看到的值 - 它被解码一次(因为它在原始URL中编码)。我看不出编码的价值(额外的编码甚至可能使这个值无法使用)。我怀疑你在编写HTML时需要正确编码值来混淆它... –

回答

1

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

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

为什么您需要使用HTML编码的简短说明仅仅是一组字符意味着HTML中的某些特殊字符,编码将在所有浏览器中优雅地帮助处理插入符号和&符号等符号。

+0

感谢您的建议,我同意你的意见。 – fooMyFavoriteVariable