Spring mvc 使用Roo防止Spring MVC中的质量分配

Spring mvc 使用Roo防止Spring MVC中的质量分配,spring-mvc,security,spring-roo,Spring Mvc,Security,Spring Roo,我正在与SpringRoo启动一个新项目。我发现它生成的MVC控制器容易受到质量分配的影响。我想知道是否有一种标准的方法只允许某些字段被更新。我正在考虑使用@InitBinder,但我不知道这是否是最好的方法 我的印象是,我所知道的大多数JavaEE框架都忽略了这个问题和CSRF预防。更糟糕的是,这些漏洞甚至经常出现在它们自己的示例代码中 旁注:我已经知道HDIV,但除了防止CSRF,我不想“丑化”我的nice REST URL 这个问题没有很好的解决方案,选项: 创建表单或DTO对象,这些对

我正在与SpringRoo启动一个新项目。我发现它生成的MVC控制器容易受到质量分配的影响。我想知道是否有一种标准的方法只允许某些字段被更新。我正在考虑使用@InitBinder,但我不知道这是否是最好的方法

我的印象是,我所知道的大多数JavaEE框架都忽略了这个问题和CSRF预防。更糟糕的是,这些漏洞甚至经常出现在它们自己的示例代码中


旁注:我已经知道HDIV,但除了防止CSRF,我不想“丑化”我的nice REST URL

这个问题没有很好的解决方案,选项:

  • 创建表单或DTO对象,这些对象的字段仅用于表单中的内容(但这在SpringRoo中不起作用)
  • 使用对象的两个实例,表单实例和数据库实例,然后仅将表单页面中的字段从表单实例复制到db实例
本文可用于帮助解决质量分配问题:

>在大多数Java EE框架中,CSRF预防都被忽略了——JSF并没有真正忽略这一点。根据设计,它只接受已经呈现的数据。@ArjanTijms我已经很长时间没有使用JSF了,但是这个ViewState功能似乎不能防止CSRF,至少不是在每个JSF实现中@谢谢你的链接。这里实际上有两个安全问题:大规模分配(MA)和CSRF。对于所有标准组件,AFAIK JSF始终可以防止MA。它只需在回发时执行与渲染完全相同的算法,即可将提交组件的ID与渲染的ID进行匹配。另外,选择组件在回发后显式检查提交的值是否在附加到它的选择项列表中。例如,只有在回发时“Foo”在列表中,它才会接受“Foo”。@ManaloSantos那么关于CSRF,这是另一种攻击。JSF2.1及之前版本通过必须存在的视图状态对此提供了隐式保护<代码>facelets。在恢复之前构建_会影响这一点,但这不是默认设置。从JSF2.2开始,有一个明确的安全令牌来防止这种攻击。请参阅,我正在为相同的强化批量分配问题搜索解决方案,对于我的应用程序来说,白名单和黑名单是一项繁琐的任务。除了spring@InitBinder之外,还有其他方法解决这个问题吗?