如何审阅 Visual InterDev 生成 CSSI 漏洞的代码

文章翻译 文章翻译
文章编号: 253120 - 查看本文应用于的产品
本文已归档。它按“原样”提供,并且不再更新。
展开全部 | 关闭全部

概要

下面的文章讨论了如何识别和正确的 Visual InterDev 应用程序容易受到 CSSI (跨站点脚本安全问题)。 仅输入这是不能正确验证或格式使您的应用程序容易受到攻击。

本文重点介绍 Visual InterDev 设计时控件 (DTC) 和脚本库。 有关 ASP 代码有关的一般原则,请参阅以下知识库文章:
253119如何查看 ASP 代码 CSSI 的漏洞

更多信息

Visual InterDev dtc 向开发人员独特的挑战因为自动生成的代码中的一部分。 开发人员可能不熟悉的脚本对象生成的特定实现和它们或如何最好地解决它们的任何漏洞。 本文介绍了各种 dtc 的所有已知的问题,它还介绍了解决这些漏洞的可能的选项。

该问题有两个特定的类别:
  1. dtc 编写脚本以显示从一个数据库和数据库的数据,包含用户输入的。
  2. 若要显示脚本的 dtc 或从客户端提交的使用数据。
在这两种情况下正确验证和 $ 编码的输出值防止基于 DTC 的网页使用在 CSSI 攻击。

当使用检索信息的 DTC 的任何方法 (如.getCaption、.getText、.value) 作为该 DTC,从值已设置使用用户提供信息时得到的字符串不是 HTMLEncoded。 此外,可以绑定到数据库字段某些 dtc 将显示原始信息从数据库,而无需编码。 按如下方式应当 HTMLEncode 这些值显示到浏览器时。 例如:
Response.Write Server.HTMLEncode(Textbox1.value)
				
如果数据是可作为一个 URL 的一部分,您应改用 URLEncode。 例如:
Response.Write "<A HREF=http://webserver/webapplication/page.asp?data=" & Server.URLEncode(Textbox1.value) & ">Click here!</A>"
				
由于有多种方法对 entrusted 脚本代码字符进行编码,您应显式设置字符集的页在浏览器呈现。 可以通过插入两个文档的 <head>标记之间的客户端 <meta>标记来执行此操作。 例如:
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset= ISO-LATIN-1">
				
为此,也可以从 ASP 使用 Response.Charset 属性:

<% Response.Charset= "ISO-LATIN-1" %>
				


下面是一些常见示例:

收起该表格展开该表格
显示示例代码
按钮 DTC 的值
Response.Write Button1.Value()
CheckBox DTC 的标题
Response.Write CheckBox1.getCaption()
标签 DTC 的标题
Response.Write Label1.getCaption()
列表框 DTC 的文本
Response.Write Listbox1.getText()
一个选项组 DTC 的值
Response.Write OptionGroup1.getValue()
文本框 DTC 的值
Response.Write Textbox1.Value()


以下是有关这些示例可能的解决方案:

收起该表格展开该表格
显示示例代码
按钮 DTC 的值
Response.Write Server.HTMLEncode(Button1.Value())
CheckBox DTC 的标题
Response.Write Server.HTMLEncode(CheckBox1.getCaption())
标签 DTC 的标题
Response.Write Server.HTMLEncode(Label1.getCaption())
列表框 DTC 的文本
Response.Write Server.HTMLEncode(Listbox1.getText())
一个选项组 DTC 的值
Response.Write Server.HTMLEncode(OptionGroup1.getValue())
文本框 DTC 的值
Response.Write Server.HTMLEncode(Textbox1.Value())


网格 DTC 会从数据库中检索到不 HTMLEncode 值。 如果您的数据库所需用户输入 (例如对于留言簿),您应 HTMLEncode 您的输出。 这可通过单击在 网格 属性对话框中的 数据 选项卡并键入:
=Server.HTMLEncode([fieldname])
				
fieldname 其中是为该列显示每个字段的名称。 大多数 dtc 自动 HTMLEncode 数据从数据库中检索到显示时,有些不这样做。 使这些控件应使用的其他代码,以确保输出到客户端是否正常 HTMLEncoded。

注:dtc 通常会自动实现过程向服务器的往返行程中维护其状态所需的逻辑。在文本框 DTC 的情况下例如对于该信息时圆形正常启动与的服务器 Textbox.asp 脚本库页 HTMLEncodes 文本的内容框维护控件状态的过程。

参考

有关详细的信息,请参阅以下公告从该计算机紧急响应小组 (CERT) 卡耐基-梅隆大学:
http://www.cert.org/advisories/CA-2000-02.html
请参见下面的知识库文章,有关详细信息:
252985如何防止跨站点脚本安全问题的 Web 应用程序
253119如何查看 ASP 代码 CSSI 漏洞
253121如何审阅 MTS/ASP 代码 CSSI 漏洞
253117防止 Internet Explorer 和 Outlook Express 跨站点脚本安全问题

属性

文章编号: 253120 - 最后修改: 2013年10月20日 - 修订: 1.4
这篇文章中的信息适用于:
  • Microsoft Visual InterDev 6.0 标准版
关键字:?
kbnosurvey kbarchive kbmt kbcssi kbctrl kbhowto kbsecurity kbsecvulnerability KB253120 KbMtzh
机器翻译
注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。
点击这里察看该文章的英文版: 253120
Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、间接的、衍生性的损害或任何因使用而丧失所导致的之损害、数据或利润不负任何责任。

提供反馈

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com