安全测试之避开客户端校验

发表于:2011-3-29 10:37

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:shourong    来源:TaoBao QA Team

  学习安全测试小一周了,今天来谈谈学习到的一些内容,怎样避开客户端进行测试,查找应用的安全问题,以及如何预防。

  大部分的web应用程序会依靠客户端执行各种措施来控制它提交给服务器的数据,以提高程序的可用性,避免客户端与服务器来回通信。比如使用javascript来校验长度是否超长,格式是否正确,使用隐藏html表单字段进行数据传送,使用url参数传送数据等等。

  但是,这样做存在一个基本的安全缺陷:用户能够完全控制客户端及提交的数据,即避开任何在客户端执行但服务器并不采用的控件,直接提交数据给服务器处理。

  目前已经有大量的拦截代理服务器的工具。比如firefox的插件temper data,它位于web浏览器与目标应用程序之间,可以拦截应用程序发布和收到的每一个http或https请求和相应。我们通过它可以拦截任何客户端传递的消息,并且对其进行检查或修改,将修改过的内容传递给服务器进行处理。

  拿一个简单的实例来说:对于一个输入框,长度限制为10,客户端通过了javascript进行校验,有一个maxlength=’10’,通常我们进行功能测试,会尝试输入10 字符和11个字符,超长之后会提示用户无法继续输入,我们认为该功能是正常的。然而,我们可以进一步进行测试:通过代理服务器来拦截这个请求,将内容改为长度为20的内容后继续提交,接着查看后端服务器应用是否提示错误信息,如果没有错误信息提示(有时数据库字段长度的设置稍微长一些),那说明这里是存在安全问题的。

  对于以上安全问题的预防措施,对于重要敏感的信息,比如折扣、价格等,要放到服务器端传参与校验等,如果服务器端收到已被客户端阻止的数据,应用程序应将异常记录到日志中,在需要的时候向管理员发出警报来监控攻击企图。在某些重要敏感的功能中,应用程序还可以主动采取防御措施,终止用户会话或暂时冻结其账户。

  综上所述,由于客户端组件和用户输入不在服务器的控制范围内,web应用程序会面临安全威胁。客户及其提交的数据本质上讲都是不值得信任的。确认客户生成数据的唯一安全方法是在应用程序的服务器端实施保护措施。

《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • berniebd
    2011-3-31 09:40:53

    firefox的tamper data

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号