繁体   English   中英

文本框的 Javascript 注入攻击预防

[英]Javascript injection attack prevention for textboxes

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

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

我使用 HtmlEncode 来防止 Javascript 注入攻击。 在考虑之后,虽然我认为我只需要 getter 上的 HtmlEncode。 setter 仅供系统使用,外部用户无法访问。

这样对吗?

几点;

第一的:

你真的应该只在你显示它们时编码值,而不是任何其他时间。 通过在从框中获取值以及粘贴时对它们进行编码,最终可能会弄得一团糟,只要有人编辑这些值,情况就会变得越来越糟。 在大多数情况下,在保存到数据库时,您不应该对值进行编码(防止 HTML/Javascript 注入 - 当然,您确实需要防止 SQL 注入),尤其是在以后可以编辑该值的情况下。 在这种情况下,您实际上需要在加载回时对其进行解码……而不是再次对其进行编码 但是再次; 仅在显示时进行编码要简单得多(包括显示以供编辑,顺便说一句)

第二:

HtmlEncode防止注入 HTML - 它可以包含一个<script>块,它会运行 Javascript,真的。 但这也可以防止与 Javascript 无关的恶意 HTML。 但是防止 Javascript 注入几乎是另一回事; 也就是说,如果您可能曾经在 javascript alert('%VARIABLE');显示用户输入的内容alert('%VARIABLE'); 你必须在那里做一种与你正在做的完全不同的编码。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM