写点什么

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

  • 2007-09-20
  • 本文字数:1459 字

    阅读完需:约 5 分钟

开源 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.x Struts 2.x ,而本次发布现在也支持 Spring MVC 2.0 JSTL 。对这些新框架的支持是靠扩展 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,我们非常高兴能让这个任务自动起来。

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

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

2007-09-20 00:305782
用户头像

发布了 255 篇内容, 共 57.4 次阅读, 收获喜欢 10 次。

关注

评论

发布
暂无评论
发现更多内容

【JIT/极态云】技术文档--审批事件

武汉万云网络科技有限公司

Python 如何根据给定模型计算权值

不在线第一只蜗牛

Python 深度学习

比 Copilot 快两倍以上!在我的开源项目 AI Godot 桌宠中用通义灵码解决问题

阿里巴巴云原生

阿里云 云原生

海外网络加速的技术手段有哪些?

Ogcloud

网络加速 企业组网 海外网络加速 企业网络加速 CDN网络加速

比 Copilot 快两倍以上!在我的开源项目 AI Godot 桌宠中用通义灵码解决问题

阿里云云效

阿里云 云原生

瞧瞧别人的Controller,那叫一个优雅!

快乐非自愿限量之名

Java 前端

极狐GitLab如何禁止从 UI 上下载代码?

极狐GitLab

gitlab

八招解决 Golang 性能问题

俞凡

golang

澳鹏白皮书:2024年AI全景报告

澳鹏Appen

人工智能 行业报告

百度发布 AI 眼镜:全球首搭中文大模型,支持边走边问;OpenAI 联合创始人宣布回归,主抓重大技术创新丨 RTE 开发者日报

声网

应用网关的演进历程和分类

阿里巴巴云原生

阿里云 云原生 网关

MES系统助力中小企业数字化转型

万界星空科技

数字化转型 生产管理系统 mes 万界星空科技 中小企业数字化转型

淘宝订单信息获取接口,淘宝订单信息获取API

tbapi

淘宝API接口 淘宝店铺订单接口 天猫店铺订单接口 淘宝店铺订单API

覆盖30个省市自治区万余家医疗机构,原生鸿蒙助力打造智慧医疗便利体验

最新动态

更经济实惠的SD-WAN组网

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN服务商 SDWAN

快递鸟物流跟踪API代码参数接入流程

快递鸟

快递物流

怎么在线画用户旅程图?分享10个用户旅程图模板!

职场工具箱

职场 产品经理 在线白板 绘图工具 用户旅程图

预算有限但想独立定制体育直播平台?3种开发方式揭秘

软件开发-梦幻运营部

GitLab 出现 500错误怎么解决?

极狐GitLab

gitlab

语音 AI 革命:未来,消费者更可能倾向于与 AI 沟通,而非人工客服

声网

一图看懂云消息队列 RabbitMQ 版对比开源优势

阿里巴巴云原生

阿里云 云原生

项目管理十大知识领域详解:从理论到实践

爱吃小舅的鱼

项目管理 项目成本管理 项目整合

Spring AI 再更新:如何借助全局参数实现智能数据库操作与个性化待办管理

EquatorCoco

人工智能 数据库 spring

离散元仿真技术与AI融合,助力广泛行业实现创新突破

Altair RapidMiner

AI 仿真 DEM altair 离散元

【JIT/极态云】技术文档--模型事件

武汉万云网络科技有限公司

2024-11-13:求出所有子序列的能量和。用go语言,给定一个整数数组nums和一个正整数k, 定义一个子序列的能量为子序列中任意两个元素之间的差值绝对值的最小值。 找出nums中长度为k的所有子

福大大架构师每日一题

福大大架构师每日一题

业务、技术、管理,谁才是指标平台的用户?

Aloudata

数据仓库 数据分析 指标管理 指标平台 指标开发

优化数据管理,提升监测效率:TDengine与新疆地环院达成合作

TDengine

tdengine 时序数据库 数据库·

云速搭助力用友 BIP 平台快速接入阿里云产品

阿里巴巴云原生

阿里云 云原生 BIP

用 Zap 轻松搞定 Go 语言中的结构化日志

左诗右码

权限系统:6个权限概念模型设计

不在线第一只蜗牛

数据库 大数据 运维

安全框架HDIV 2.0:现支持与Spring MVC和JSTL的集成_Java_Ryan Slobojan_InfoQ精选文章