彩票走势图

网页设计安全漏洞三例

翻译|其它|编辑:郝浩|2003-12-01 15:57:00.000|阅读 1634 次

概述:

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP

    <li id='mx2hi'></li>

    <dd id='mx2hi'><tbody id='mx2hi'><td id='mx2hi'><optgroup id='mx2hi'><strong id='mx2hi'></strong></optgroup><address id='mx2hi'><ul id='mx2hi'></ul></address><big id='mx2hi'></big></td><table id='mx2hi'></table></tbody><pre id='mx2hi'></pre></dd><span id='mx2hi'><b id='mx2hi'></b></span>

    • 这个题目很奇怪,网页设计还要考虑安全的吗?安全不是系统管理员的事吗?那你就错了,系统管理员可以让系统固于金汤,但是如果网页程序有漏洞,最好的系统管理员也没有办法。下面就举几个常见的例子;

      1、用户验证漏洞。

      一般程序设计者将用户名和密码保存在数据库中,验证用户合法性时,检验密码和用户名是否对应,以此判定用户是否合法。

      一个典型的用户验证页面如下:

      此页源代码如下:

      〈html>
      〈head>
      〈meta http-equiv="Content-Language" content="zh-cn">
      〈meta http-equiv="Content-Type" content="text/html; charset=gb2312">
      〈meta name="GENERATOR" content="Microsoft FrontPage 4.0">
      〈meta name="ProgId" content="FrontPage.Editor.Document">

      〈/head>
      〈body>
      〈p align="center"> 〈/p> 

      〈form method="POST" action="login.asp">
      〈div align="center">
      〈center>〈table border="1" width="53%" bordercolor="#C0C0C0"> 〈tr>
      〈td width="100%" bgcolor="#C0C0C0" colspan="2">
      〈p align="center">用户登录〈/td>〈/tr>〈tr>
      〈td width="25%" align="right">用户名:〈/td>

      〈td width="75%">〈input type="text" name="name" size="20">〈/td>
      〈/tr> 

      〈tr&gt; 〈td width="25%" align="right">密 码:〈/td>

      〈td width="75%">〈input type="password" name="passwd" size="20">〈/td>
      〈/tr>

      〈/table>

      〈/center>

      〈/div>

      〈p align="center">〈input type="submit" value="登 录" name="B1">

      〈input type="reset" value="重 写" name="B2">〈/p>

      〈/form>

      〈p align="center"> 〈/p>

      〈/body>

      〈/html>


      此页面的数据用login.asp处理,其源代码如下(以下程序有多处漏洞,请勿直接引用):
      〈!--#include file="conn.inc"-->

      〈%Response.Buffer=true%>

      〈%

      '取得帐号用户

      zhanghao=trim(request.form("name"))

      mima=trim(request.form("passwd"))

      '从数据库中取得数据

      mysql="select zhanghao,mima,danwei,lev from login where
      zhanghao='"&zhanghao&"' and mima='"&mima&"'"
      zhanghao='"&zhanghao&"' and mima='"&mima&"'"
      '如果没有此记录,跳到登录错误页面
      if rs.eof or rs.bof then
      response.redirect"loginerr.htm"
      end if
      '如果有此记录,顺利登录
      response.redirect"manage.asp"
      %>
      以上验证方式有很大一部分程序员使用,但是,如果我们构造一个非常特殊的用户名和密码(这里不给出),语句:mysql="select zhanghao,mima,danwei,lev from login where zhanghao='"&zhanghao&"' and mima='"&mima&"'" 中的条件:where zhanghao='"&zhanghao&"' and mima='"&mima&"' 限制就会毫无用处,一直为真,这样,非合法用户也就直接进入了敏感区域。网上有很多这样设计的验证,笔者因为工作关系,发现太多有这种漏洞的验证,甚至一些很有影响的大公司设计的程序也是如此。建议读者检查自己的程序有无这种漏洞,如果有,请用以下方法解决。
      (1)修改程序,改变验证方式;
      将SQL语句改为:
      select zhanghao,mima,danwei,lev from login where zhanghao='"&zhanghao&"'
      然后执行,如果没有此帐号,直接跳入错误页面;如果有此帐号,将此帐号对应密码和用户提交密码比较:

      if rs("mima")=trim(passwd) then
      response.redirect"manage245sdv.asp"
      这样就可以有效防止特殊用户名用户漏洞的产生;
      (2)验证用户名密码之前先检验有无非法字符;
      过滤一些敏感字符可以直接防止此漏洞的产生,比如:“&”“/”“”“+”“ ‘ ”等。具体方法在在这里就不详细给出了。

      2、 连接文件漏洞

      ASP网页程序设计的时候,我们一般将数据库连接方式保存为一个文件,在需要此连接的网页中直接应用此文件。刚才用户验证的例子程序就有这样的连接文件应用,读者会发现“login.asp”文件源程序有这样一句:
      〈!--#include file="conn.inc"-->
      其中“conn.inc”是包含数据库连接方式的文件。
      这种引用方式给网页设计者很大的方便,然而,如果有心人想窥探你的数据连接方式,他就有可能猜出你的连接文件名,然后在浏览器直接打入此文件名,如:
      //www.awebsite.com/conn/conn.inc
      结果是此文件被下载,然后你的数据库连接方式直接暴露在别人面前,甚至数据库帐号密码也泄漏,然后结果就可想而知。
      以上设计方式现在仍然有很多设计者在使用,希望读者不要以此实验!那么,网页设计者怎样避免以上漏洞?有以下几种方法:
      (1)改变连接文件名
      连接文件不一定要是inc文件,也可以是ASP文件,因此,我们可以将conn.inc改名为conn.asp,这样,浏览端就不可以下载此连接文件了;
      (2)将连接方式保存在Application中,直接引用;
      这种方式对系统资源有一些小小的消耗,但是仍然不失为一种好的选择;
      (3)如果一定要使用inc文件,将此文件取一个特别复杂的名字,比如:xxx223773.inc,反正不能让浏览者猜到;
      以上方法可以有效防止此类漏洞的发生,可以依自己习惯设定。

      3、 验证不全漏洞
      还是第一点的验证,经验不足的网页设计者在设计网页时,往往可以考虑到在敏感区域入口加上用户验证,但是,对于敏感区域内部的网页就不再加入验证。这样的结果是,如果用户从网页设计者提供的入口进入敏感区域,就会有验证出现;如果用户跨过验证入口,直接调用敏感区的文件,这个验证就形于虚设。这个毛病不但初学者有,那些设计经验很丰富的设计者有时为了简单,客户有不会仔细检查,干脆也就做个样子算了。那么,到底应该怎样使敏感区的每一个文件都有验证,不能直接调阅?有以下方法:那就是给用户设计一个session,如果用户的session不为空,证明是合法用户;反之,直接跳到登录页面。以下给出简单例子。
      (1)给每一个用户在验证页面设计一个session;
      如上文的login.asp中,在最后一行加入:
      〈%session("zhanghao2764819")=trim(zhanghao)%>
      这样就给每一个合法用户一个唯一session;
      (2)敏感区的每一个文件验证其session是否为空,如果为空,跳到登录页面要求登录;可以这样设计:
      敏感区的每一个文件其都加入:
      〈!--#include file="yanzh.asp"-->
      其内容如下:

      〈%
      if session("zhanghao2764819")="" then
      response.redirect"login.htm"
      %>


      这样就给敏感区的每一个页面加上了验证。

      总结:以上只是网页设计中一些比较典型的安全漏洞,要做到真正的安全网页设计,不但需要长久的经验而且需要不断的开阔视野,了解最新的安全问题。

         

                        <dfn id='mx2hi'><optgroup id='mx2hi'></optgroup></dfn><tfoot id='mx2hi'><bdo id='mx2hi'><div id='mx2hi'></div><i id='mx2hi'><dt id='mx2hi'></dt></i></bdo></tfoot>

                        <ul id='mx2hi'></ul>