什么东西是HTML或URL编码应该解码?编码够吗?

时间:2011-08-17 17:51:29

标签: xss sql-injection html-encode antixsslibrary

首次使用AntiXSS 4用户。为了使我的应用程序更安全,我在QueryString参数上使用了 Microsoft.Security.Application.Encoder.UrlEncode 输入表单字段的参数上的 Microsoft.Security.Application.Encoder.HtmlEncode

我有一个倍数,我很感激你,如果你可以尝试回答所有这些(不必一次或由同一个人 - 任何abswers都会非常有用)。

我的第一个问题是我是否正确使用这些方法(我是否在适当的情况下使用适当的AntiXSS方法)?

我的第二个问题是我编码过的东西,如果它被解码了。我很困惑,因为我知道 HttpUtility 类提供了编码和解码的方法,所以为什么在AntiXSS中做不一样?如果这有帮助,那么我编码的参数永远不会被视为应用程序内的任何文本。

我的第三个问题与第三个问题有关,但我想强调它,因为它很重要(可能是我整体困惑的根源)。我听说.NET框架自动解码像QueryStrings这样的东西,因此不需要显式解码方法。如果是这样的话,那么如果要撤消HTML,那么首先编写某些内容的重点是什么。它只是...似乎不安全?我错过了什么,特别是因为 HttpUtility 类提供了解码。

最后问题,AntiXSS是否有助于反对SQL注入,还是只针对XSS攻击进行保护?

1 个答案:

答案 0 :(得分:2)

  1. 很难说你是否正确使用它。如果您在构建查询字符串时使用UrlEncode,然后将其作为页面中的链接输出,那么是的,这是正确的。如果你是Html编码当你把一些东西写成一个值然后是的,这是正确的(好吧,如果它是通过HTML属性设置你应该使用HtmlAttributeEncode,但它们几乎是相同的。)

  2. .NET解码器使用AntiXSS的编码值,因此我没有必要重写它们 grin

  3. 编码点是您在输出时执行的操作。因此,例如,如果用户在表单上输入window.alert('Numpty!)并且您只是将输入raw放在输出中,那么javascript就会运行。如果你先编码它,你会看到<成为& lt;等等。

  4. 不,SQL注入是一个完全不同的问题。