快速业务通道

领先技术: 子类化和重写ASP.NET页面 - 第II部分

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-03
查看源代码”,然后将内容保存为本地 HTML 文件。但这种方法只有在攻击者可以实际访问页面时才可能奏效。例如,如果页面受到保护,攻击者就必须出示有效凭据才能查看页面。但是,被盗用的身份验证 Cookie、网络钓鱼诈骗及其他社交诈骗术都可以使有用的信息流入不正当人的手中。

将 ASP.NET 页的标记保存到本地机器后,攻击者需要对其进行一些更改。首先,攻击者必须更改表单的 action 属性,使其指向同一 ASP.NET 页面的绝对 URL。以下是 ASP.NET 的 default.aspx 页面的服务器表单的典型标记:

<form name=”form1” method=”post” action=”Default.aspx” id=”form1”>

攻击者会将其更改为以下内容:

<form name=”form1” method=”post”
   action=”http://targetserver/Source/Default.aspx” id=”form1”>

ASP.NET HtmlForm 控件上没有 action 属性,但当您使用 Plain HTML 时,仍可以将表单内容发布到任何需要的 URL。第二项需要更改的是将要发布的“破坏”数据。我要为 ASP.NET TextBox 服务器控件发出的标记设置一个 value 属性,将其设为远大于规定五个字符的字符串:

<input name=”TextBox1” type=”text”
maxlength=”5” id=”TextBox1”
value=”This is a far looooonger text” />

当攻击者在自己的计算机上显示该 HTML 页面并单击按钮时,您认为会发生什么?结果如图 3 所示。左侧浏览器窗口的地址栏指明所显示的页面为本地 HTML 页。但在右侧的浏览器窗口中,您会发现经过修改的表单内容已发布到远程 ASP.NET 应用程序。攻击者避开了五个字符的限制。这表明恶意用户是有办法发送文本框上任意大小的页面文本的,无论 MaxLength 为何种设置。

领先技术: 子类化和重写ASP.NET页面 - 第II部分

图 3 可发布任意长度字符串的本地 HTML 页

其中的原理是什么呢?

您可能想知道问题出在何处。是在浏览器中?还是在 ASP.NET 运行库中?或者可能是 TextBox 控件中?没错,真正的问题就出现在 TextBox 控件中。

如果含有 TextBox 服务器控件的页面在回发后被重新创建在服务器上,则 TextBox 服务器控件将不会对 MaxLength 进行检查。很显然,为了安全起见,在指定 Text 属性之前,TextBox 应该检查 MaxLength 的值,并将其与已发布文本的长度进行比较。

改进后的 TextBox 控件

TextBox 位于服务器端,与 <input type=text> HTML 标记相对应,它可以接收用户键入到输入缓冲区内的文本。TextBox 需要对该文本进行处理,以激活 TextChanged 服务器事件,并使页面内的其他控件可以使用数据。处理已发布数据的 ASP.NET 控件可以实现 IPostBackDataHandler 接口,方法如下:

Public Interface IPostBackDataHandler
 Function LoadPostData(ByVal postDataKey As String, _
     ByVal postCollection As NameValueCollection) As Boolean
 Sub RaisePostDataChangedEvent()
End Interface

LoadPostData 方法会检查 TextBox 控件的回发数据是否与其前一个值不同,如果是,则加载该内容并返回 true。否则即返回 false。

还原每个控件视图状态的内容后,会立即在页面的 Init 和 Load 事件之间调用 LoadPostData 方法。postDataKey 参数指示了已发布集合内的名称,该集合引用了要加载的内容。postCollection 参数引入了所有已发布值的集合 – 查询字符串或表单集合,具体取决于所选的 HTTP 谓词。

在生命周期中稍后会调用 RaisePostDataChangedEvent 方法,以触发一项与控件相关的可选事件,该事件能够指示控件的状态在回发后是否被更改。在实践中,只有在 LoadPo

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号