科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道应用软件锁定:使用修订版OWASP Top Ten保证Web应用程序的安全——第三部分

锁定:使用修订版OWASP Top Ten保证Web应用程序的安全——第三部分

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

注入缺陷,特别是SQL注入脆弱性,可能给Web应用程序环境造成严重的商业风险。本文说明了注入缺陷和SQL注入攻击的本质,并就强化Web应用程序提出一些建议。

作者:builder.com.cn 2007年4月5日

关键字:

  • 评论
  • 分享微博
  • 分享邮件

图B显示的是相同的源代码,但由攻击者输入一个用户名和密码。注意,输入文本中包含带一个总是返回TRUE的条件的OR操作符。因此,根据操作符优先原则,WHERE子句为每行返回TRUE。

图B

锁定:使用修订版OWASP Top Ten保证Web应用程序的安全——第三部分

操纵攻击实例(被污染输入)(Kost 2004)

Kevin Spett的SPI Dynamics论文《SQL注入》中说明了其它攻击类型,并提供更加详细的代码实例。

防御SQL注入攻击

各种注入攻击的主要防御手段为输入确认。这包括从所有接口收到的程序输入。图C描述了四种可能的Web应用程序输入来源。

图C

锁定:使用修订版OWASP Top Ten保证Web应用程序的安全——第三部分

Web应用程序输入

上面这些来源的输入可能会改变一个应用程序访问、处理和显示数据的方式。例如,攻击者可以添加、删除或修改一个查询字符串中的URL参数。

隐藏的表单域可能遭到修改,使表单重新被提交。数据库信息,特别是由其它应用程序写入的域,可能会有意无意地被污染。脆弱性的数量和类型仅限于系统的特殊弱点和攻击者的创造能力。

强化应用程序代码是防御被污染输入的唯一有效手段。下面是一些开发团队应遵循的原则:

  • 确认所有内容。检查意料之中的内容,拒绝意料之外的一切。
  • 在服务器上执行所有确认。客户端确认并非真正的确认。例如,攻击者很容易在她的工作站禁止脚本执行,阻止输入确认,输入恶意的无效表单,然后提交表单。
  • 阻止内容过于全面的用户错误信息。攻击者经常通过提供特殊类型的输入,然后分析得到的错误信息,以此来搜寻代码注入脆弱性。
  • 使用积极过滤而非消极过滤。换句话说,检查应该输入的内容,而不是不应该输入的内容。确认不应该输入的内容给确认过程留下太多漏洞。有许多内容需要检查。可能的过滤检查包括:
    a. 数据类型(字符串、整数等)正确吗?
    b. 参数是必需的吗?
    c. 使用的是允许的字符集吗?
    d. 输入满足最小和最大长度限制吗?
    e. 允许NULL值吗?
    f. 输入的字符在范围限制之内吗?
    g. 输入造成数据复制了吗?如果是这样,这种情况可接受吗?
    h. 输入满足格式要求吗?(例如与常规表达式相比较)
    i. 从列表中选择的参数包含有效值吗?
  • 执行内部代码复查或“伙伴检查”。这包括让程序员检查彼此的工作。在这个系列后面的文章中我们还会讨论到完成这个任务的自动化方法。另外,确保质量保证过程不仅测试有效输入,而且测试无效输入。
  • 消除语法输入。保证不在表单域中输入不必要的内容。清除引号或在前面加上反斜线。
  • 使用“最小权限”限制数据库用户的权限。
  • 考虑使用默认的拒绝表达式。 Kevin Spett提供以下常规表达式实例s/ [^0-9a-zA-Z]//\,它只返回字母和数字。

总结

像所有由确认输入失败引起的脆弱性一样,使用安全的开发标准,就可以大大降低注入缺陷带来的商业风险。为保护你的网络和数据,保证被污染的输入无法执行是重要的第一步。

责任编辑:德东

查看本文国际来源

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章