快速业务通道

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

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-07-03
字符串长度并不难,不管是通过 HTTP 模块还是通过有限地修改代码,都是可以实现的。

原始解决方案

发现 SQL 注入漏洞后,客户认为将可接受参数的大小限制为五个字符(即代码的实际大小)就能快捷有效地解决问题。仅有五个可用的字符,黑客是奈何不了您的数据库– 至少希望是这样的。因此,客户安装了“领先技术”2007 年 3 月刊中演示的 HTTP 模块,并检查了受影响页面的查询字符串大小。结果发现实际发送到页面的字符未超过五个。

但是,该应用程序组合了新的 ASP.NET 页面和经过修改的经典 ASP 页面,其中某些页面能够允许用户在文本框内键入并提交相同的代码。而在服务器上,指定的代码会在回发过程中通过前述的相同方法附加到 SQL 语句中。因此,通过文本框提交的文本长度也需要进行同样的限制。开发人员原以为这是个简单的问题,因此将文本框的 MaxLength 属性设置为所需的值:

<asp:textbox runat=”server” id=”TextBox1” MaxLength=”5” />

修复过的问题看上去万无一失。长度超过五个字符的代码无法进入站点的中间层。但这并不一定意味着站点处于可避免注入的安全状态,但这种做法确实限制了遭受攻击的可能性。或者说他们是这么认为的。

模拟一次很简单的攻击

假设有一个类似于图 1 所示的 ASP.NET 示例页面。页面的源代码如图 2 所示。该页面具有一个 MaxLength 属性为 5 的文本框和一个提交按钮。单击按钮后,会执行回发操作并对文本框的内容进行处理。正常情况下,在浏览器中显示页面的位置是无法键入五个以上的字符的。如果您尝试粘贴更长的文本字符串,字符串将被相应地截断为指定长度。

Figure 2 示例 ASP.NET 页的源代码

ASPX

<%@ Page Language="VB" AutoEventWireup="false"
  CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html >
<head runat="server">
  <title>Max Length</title>
</head>
<body>
  <form id="form1" runat="server">
  <div>
    <h3>Try specifying more than 5 characters</h3>
    <asp:TextBox ID="TextBox1" MaxLength="5"
     runat="server"></asp:TextBox><br />
    <asp:Button ID="Button1" runat="server" Text="Click" />  
  </div>
  </form>
</body>
</html>

代码隐藏

Partial Class _Default : Inherits System.Web.UI.Page
  Protected Sub Page_Load(ByVal sender As Object, _
     ByVal e As System.EventArgs) Handles Me.Load
    TextBox1.Focus()
  End Sub
  Protected Sub Button1_Click(ByVal sender As Object, _
     ByVal e As System.EventArgs) Handles Button1.Click
    Response.Write("<b>Processing text: </b>" & TextBox1.Text & "<b>
  </b><hr/>")
  End Sub
End Class

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

图 1 ASP.NET 示例页面

现在我们从攻击者的角度考虑这个问题。对网页进行攻击通常需要先创建格式为 Plain HTML 的页面副本,然后改变某些值并发布“破坏”版的页面。要获得页面的 HTML,恶意用户只需向普通用户那样显示页面:选择“

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号