我有以下代码:
label x = txtName.Text;
当安全团队分析该 dll 时,他们表示可以对上述代码执行 XSS 攻击。我知道文本框Text
属性并不能防止 XSS 攻击,那么我现在应该做什么?
下面的修改能解决这个问题吗?
label x = Server.HtmlEncode(txtName.Text);
我假设您正在谈论 WebFormsLabel http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.label.aspx- 问题不清楚(发布真实代码!)
这是 ASP.NET WebForms 设计的问题。许多元素都有一个属性,称为Text
,但该属性根据元素执行不同的操作。
你会希望这样的设置Text
控件上的内容将设置其纯文本内容。这种安全操作正如其名称所暗示的那样。这些控件就是这种情况:
- TextBox
- Button
- 图像按钮
- ListItem
不幸的是,在许多其他控件上,同名的属性实际上设置了HTML 标记在元素中。所以如果你有一个文本字符串<b>
在其中,您会看到一些粗体文本而不是字母b
在一些尖括号中。如果文本包含诸如<script>
其中,代码将在浏览器上执行,从而导致安全问题。
其中一些不幸的不安全控制措施是:
- Label
- 超级链接
- 链接按钮
- 单选按钮
- Checkbox
- 表格单元格
为了安全地使用这些,您必须对写入的所有内容进行 HTML 编码Text
财产。
最后有一个双向摆动的控件:
默认情况下,这会设置 HTML 标记(嘘!),但是如果您设置Mode="Encode"
属性,它设置文本。
这当然非常令人困惑,并且无法设计 Web 框架,但这就是我们必须处理的问题。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)