针对文本框的Java注入攻击预防

问题描述 投票:1回答:2

说我有一个textBox和一个属性来获取并设置其值:

public SomeText
{
   get { return HttpUtility.HtmlEncode(textBox.Text); }
   set { textBox.Text = HttpUtility.HtmlEncode(value); }
}

我已经使用HtmlEncode来防止Javascript注入攻击。在考虑了一下之后,尽管我在想我只需要在吸气剂上使用HtmlEncode。该设置程序仅由系统使用,不能由外部用户访问。

这是正确的吗?

c# javascript asp.net security
2个回答
0
投票

是。您只需要对用户接受的字符串进行编码,并且必须在页面内部显示。


3
投票

几分;

第一:

您实际上应该只在显示值时对值进行编码,而在任何其他时间都不应。通过在从框中获取值时以及在粘贴时对它们进行编码,最终可能会陷入混乱,每当有人编辑值时,情况就会越来越糟。在大多数情况下,在保存到数据库时,您不应该对值进行编码(针对HTML / JavaScript注入-当然,您需要防止SQL注入),尤其是在以后可以编辑该值时。在这种情况下,实际上,您需要在重新加载它后对其进行解码,而不是再次对其进行编码。但是又仅在显示时进行编码(包括显示以供编辑,顺便说一句)]

第二:

HtmlEncode可以防止注入HTML-可以包含将运行Javascript的<script>块,为true。但这也可以防止与Java无关的一般恶意HTML。但是防止Javascript注入几乎是另一回事。也就是说,如果您可能曾经显示过用户在javascript alert('%VARIABLE');中输入的内容,则您必须在其中进行与您正在执行的编码完全不同的编码。

© www.soinside.com 2019 - 2024. All rights reserved.