JSF安全性:bean方法accessibilty

时间:2018-02-26 08:02:38

标签: security jsf-2 managed-bean

我有一个关于JSF ManagedBeans的基本问题,我无法找到答案。

假设我有一个bean MyBean,它有两个方法method1method2以及一个带有命令链接的JSF页面

<h:commandLink action="#{myBean.method1}">
</h:commandLink>

是否有人可以分析网页的源代码并致电method2而不是method1

2 个答案:

答案 0 :(得分:2)

答案

不,这在设计上是不可能的。

推理

从技术上讲,客户端只能告诉服务器“用户点击了具有特定ID的html元素”。 然后,JSF在服务器端处理此事件,查找具有相应id的组件,在这种情况下执行方法“#{myBean.method1}”。 如您所见,客户端无法[!]告诉服务器如何处理此事件。

来源

JSF 2.2 Spec - 3.4事件和监听器模型

买者
JSF是有状态的,有多种方法可以保持这种状态。默认是保存服务器端的状态信息(例如在用户HttpSession中) 另一种选择是向客户端传输(加密)状态。这在概念上仍然是安全的,但可能是客户端状态保存的错误。这样的错误可以被利用来做你所描述的事情。

答案 1 :(得分:-2)

是的,始终可以在客户端修改代码(或标记语言)。您的“操作”将通过某些表单和/或Javascript-Methods调用 - 有经验的用户可以看到所有内容。

但这不仅仅是JSF-2的问题 - 这适用于允许客户端见解的每种语言。

您不应该通过默默无闻来应用“安全性”(https://en.wikipedia.org/wiki/Security_through_obscurity),而是确保您可以在服务器端处理此问题。

如果有权访问两个网址的用户将url1修改为url2 - 那很好,为什么不呢? (可以加入书签) - 但如果不允许他访问url2,您应该处理修改后的请求。