BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

安全框架HDIV 2.0:现支持与Spring MVC和JSTL的集成

| 作者 Ryan Slobojan 关注 0 他的粉丝 ,译者 胡键 关注 0 他的粉丝 发布于 2007年9月21日. 估计阅读时间: 5 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

开源Web应用安全框架HDIV最近发布了2.0版。为了解更多关于此次发布的情况,InfoQ采访了HDIV项目领队Roberto Velasco Sarasola。

Sarasola将HDIV描述为Java Web应用安全框架,它旨在防止绝大多数常见的Web应用攻击,如SQL注入、跨站点脚本和参数篡改。HDIV假定任何远程HTTP客户端请求都会成为攻击媒介,并着手验证请求不是某种类型的攻击——这意味着要解决存在于现有应用框架中验证策略的缺口:

当前Web框架提供了一些验证功能,但是大多数时候它们不足以覆盖常用验证的需要。例如,在你的Web应用中有一个这样的链接http://www.myhost.com/action1.do?account=56,访问帐号为56的信息,你如何保证客户端不会更改这个值去访问其他人的帐号,如account=40?

使用标准安全验证器(validator)(更适合用于可编辑数据验证),不可能检查这种情况,你需要自定义验证。例如,在HttpSession中包含帐号id或在数据库中执行的SQL里使用用户标识。这种安全问题,被认为是实例级别的安全,它非常难以解决。因为,在一个Web应用中,有成千上万条相似的请求需要被验证。

以下是Sarasola描述的HDIV所提供的抵御这些攻击种类的能力:

  • 数据完整性——为了防止参数篡改,HDIV保证任何服务器产生的、只读数据(如隐藏域)不能被客户端修改。
  • 可编辑数据验证——为了去除跨站点脚本和SQL注入攻击,HDIV分析所有的可编辑数据域。
  • 数据保密——通过混淆参数名称和值,HDIV加密了不可编辑数据,这样防止了内部数据(如列名或Web目录名)暴露给客户端。
  • 详细的攻击日志——HDIV记录它检测到的每次攻击的信息,信息包括:URL、用户名、IP地址和攻击类型。

HDIV通过自定义JSP标签与Java Web应用集成,标签用来替换普通的链接和Form标签。在应用的web.xml中插入一个HDIV Web过滤器,这样将对每个请求自动执行验证。在以前版本中,HDIV支持Struts 1.xStruts 2.x,而本次发布现在也支持Spring MVC 2.0JSTL。对这些新框架的支持是靠扩展Spring和JSTL标签本身并在其中加入HDIV功能做到的——为了支持它们,对核心HDIV库和Web过滤器都不需要做任何改动。同样,既然Spring和Struts都是基于Action的框架,在HDIV看来,它们非常相似——Sarasola说最大的挑战是扩展框架标签本身,因为标签上定义的扩展点非常糟糕或者压根儿就不存在。他也表示期望框架开发者能对标签增加定义良好的扩展点,以使得其他框架的开发者可以更加容易的集成它们。

Sarasola还被问到了对于HDIV的后续打算,他描述了一个针对Webflow集成的计划:

目前HDIV支持3种状态管理策略。就内存和哈希(memory and hash)策略来说,HDIV为每个可能在JSP中被处理的请求(每个链接或Form之一)在服务器端保存一个对象(状态)。有趣的是,从伸缩性的观点来看,它限制了服务器端的缓存大小。在当前的发布中,可以定义一个最大缓存大小,但是很多时候很难定义一个合适大小的缓存,因为这依赖于应用。

我们考虑用Webflow来解决这个问题 ,因为它提供了一种逻辑划分客户端导航的方法。这样,HDIV将使用Webflow监听器的功能来决定何时从缓存删除对象。

另一个有趣的特性是,利用自定义标签,HDIV给每个链接或Form自动加上了webflow execution key。现在,在Struts、Struts 2和Spring MVC应用中,我们不得不手动增加这个id,我们非常高兴能让这个任务自动起来。

同时,他还指出对于WebWorkStripesJSF的支持也在计划之列。

查看英文原文:HDIV 2.0: Security framework now integrates with Spring MVC and JSTL

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

springmvc代码下载:http://www.zuidaima.com/share/search.htm?key=springmvc by 最 代码

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT