HarmonyOS开发者限时福利来啦!最高10w+现金激励等你拿~ 了解详情
写点什么

安全框架 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:305757
用户头像

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

关注

评论

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

Java 并发编程解析 | 如何正确理解Java领域中的锁机制,我们一般需要掌握哪些理论知识?

Java快了!

Java并发 java;

设计模式的艺术 第七章原型设计模式练习(在某销售管理系统中设计并实现了一个客户类Customer,其中包含一个名为客户地址的成员变量,客户地址的类型为Address。用浅克隆和深克隆分别实现Customer对象的复制)

代廉洁

设计模式的艺术

WAIC 2022 | 洞见科技在可信AI论坛联合发布《可信人工智能产业生态发展报告》

洞见科技

Dubbo Mesh:从服务框架到统一服务控制平台

阿里巴巴中间件

阿里云 微服务 云原生 dubbo

使用 CRD 开启您的 Ingress 可观测之路

观测云

前端食堂技术周刊第 51 期:pnpm v7.10.0、8 月登陆网络平台的新内容、重新思考流行的 Node.js 模式和工具、打包 JavaScript 库的现代化指南

童欧巴

chrome Node React Chrome开发者工具 pnpm

java基础学习:java中的反射

Java快了!

java;

「工作小记」关于业务组件的思考

叶一一

前端 React 组件开发 9月月更

用过这个API接口工具后,确实感觉postman有点鸡肋......

Liam

Java Postman swagger API开发 API调式

2022服贸会 | 洞见科技姚明:从智能化到密态化,数据科技向善升级

洞见科技

五分钟了解 Databend 全新 SQL 类型系统

Databend

开源项目 sql 开源社区 SQL分析

蓝凌OA

科技云未来

MobLink后台基本配置

MobTech袤博科技

android 开发者 iOS SDK

ShareSDK iOS端微信如何获取authcode值

MobTech袤博科技

微信 iOS SDK

Dragonfly 基于 P2P 的文件和镜像分发系统

SOFAStack

容器 云原生 镜像 日志 文件

隐私计算,让企业大数据走进数据网络时代

Jessica@数牍

由循环开始的前端学习杂谈话事录-sam9029

Sam9029

前端 个人博客 成长笔记 9月月更

Koordinator 0.6:企业级容器调度系统解决方案,引入 CPU 精细编排、资源预留与全新的重调度框架

阿里巴巴中间件

阿里云 云原生 Koordinator

WAIC 2022 | 洞见科技王湾湾出席BPAA第二届应用算法实践典范,共话前沿算法产业发展

洞见科技

验证一个小小的问题

艾小仙

Java MySQL 编程 程序员 compact

lodash 在vue3+vite中按需加载

木叶🐱

vite Vue3 lodash

与紧张为友,享受紧张

宇宙之一粟

读书笔记 个人成长 演讲 9月月更 享受紧张

「工作小记」小程序开发的喜怒哀乐

叶一一

小程序 前端 9月月更

mysql查询 limit 1000,10 和limit 10 速度一样快吗?如果我要分页,我该怎么办?

Java快了!

MySQL

面向对象分析与设计的底层逻辑

阿里巴巴中间件

阿里云 云原生

发挥CODING 敏捷开发能力,腾讯云加速提升国产芯片研发效率

科技热闻

【xShell 7】强悍的Linux远程链接工具、终端模拟器

淋雨

Linux 运维 xshell

无代码开发平台怎么选?选择合适无代码平台的13个关键步骤

优秀

无代码平台

leetcode 114. Flatten Binary Tree to Linked List 二叉树展开为链表(简单)

okokabcd

LeetCode 算法与数据结构

Xshell 7 安装激活与换机转移许可证教程详解

淋雨

Linux xshell #运维

观测云&亚马逊云科技「可观测性体验日」北京站圆满落幕

观测云

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