当前位置:  开发笔记 > 编程语言 > 正文

在JSF中,防止表单篡改的最佳方法是什么?

如何解决《在JSF中,防止表单篡改的最佳方法是什么?》经验,为你挑选了1个好方法。

我们正在使用JSF 1.x打开服务器端状态保存.我们遇到一个问题,即作为web-bot实现的恶意用户可以提交页面,而不提交预期在表单中的所有字段.这导致一些未被调用的验证器应被调用,等等.

我们希望阻止用户能够在表单中添加/删除字段并提交表单(如果他们想要提交表单,则所有预期字段都在那里).在过去,我使用页面上字段ID的MD5哈希加上在页面上保存为隐藏字段的未知短语和会话过滤器,在给定提交的字段ID的情况下生成预期哈希并将其与隐藏字段中的值.

有什么我可以用JSF开箱即用,以防止用户操纵表单?或者使用第三方库?



1> BalusC..:

在JSF中,如果明确设置了这些字段,那么应该已经不可能了required="true".如果省略这个和/或替换自定义验证器或者在bean操作方法中进行验证,那么机器人确实能够篡改表单.

因此,为了解决这个问题,请required="true"使用硬服务器端值明确添加到必需的字段(因此不能required="#{not empty param.foo}"在客户端/机器人可以控制的地方大致等等param.foo).由于视图状态存储在服务器端,因此webbot无法显示/修改状态.

至少,这就是理论.或者它必须是一个非常智能的webbot,或者可能是你的webapp中使用的JSF impl /版本中的(旧的?)bug/exploit.最新的JSF 1.x可以在这里下载.


更新:对于JSF 2.x目标答案,在客户端删除输入时跳转到Validator - 这是否符合JSF规范?简而言之,它可以在JSF 2.x中实现,并且可以(应该)通过放置bean验证或DB约束来保护它.

推荐阅读
手机用户2502851955
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有